eglSwapBuffers

2023-11-05

一般性嵌入式平台

 

一般性嵌入式平台

 

 

 

利用双缓冲进行Swap的时候,Display和Surface进行实际意义上的地址交换,来实现eglSwapBuffers的标准, 如上图的右侧所示。
上图的左侧表示,单缓冲Framebuffer的形式,Surface永远都在后端, 显示的永远是Display,在GPU出现后已不使用。

 

https://blog.csdn.net/qiuyun0214/article/details/54614892

 

glReadPixels函数使用和耗时问题

glReadPixels是为了获取opengl画出的画面,保存成图片供使用:

函数接口如下:

void glReadPixels(GLint x, 

                  GLint y, 

                  GLsizei width, 

                  GLsizei height, 

                  GLenum format, 

                  GLenum type, 

                  GLvoid * data); 


x, y:描画的图像的左下角的坐标,也就是相对显示窗的左下角为(0,0)原点的坐标点,如果想截取整个opengl显示窗口,取0,0即可(不是opengl描画坐标系的原点值)。 
width,height:截屏范围。 
format,type: 
format指的是opengl中像素存储的格式,一般有: 
GL_ALPHA 
GL_RGB 
GL_RGBA 
需要color framebuffer中的哪些数据,可以只要ALPHA,或者RGB或者RGBA都要。 
type这个值要和format匹配上, 
GL_UNSIGNED_BYTE,(0-255) 
GL_UNSIGNED_SHORT_5_6_5, 
GL_UNSIGNED_SHORT_4_4_4_4, 
oGL_UNSIGNED_SHORT_5_5_5_1, 
这个每一个通道的范围在0-2n次方的范围内。 
这里需要注意,format和type需要匹配,你可以去查询当前opengl支持的匹配的两者值是多少,查询方法如下:

glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE,&eReadType); 
glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT,&eReadFormat); 
  • 1
  • 2

这两个接口可以查询匹配的format和type值。

最后一个参数是图像数据存放的指针,保证分配的空间够大。

经测试,一副400*534的图像取RGBA格式耗时约60ms,耗时较长。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

eglSwapBuffers 的相关文章

  • 苹果M1芯片上运行Stable Diffusion(文字作画)

    1 源码下载 git clone b apple silicon mps support https github com bfirsh stable diffusion git cd stable diffusion 2 修改gitee国
  • 聚观早报

    今日要闻 谷歌发布全球最大视觉语言模型 马斯克预计Twitter下季度现金流转正 王兴投资王慧文ChatGPT项目 美国拟明年 11 月开展载人绕月飞行 慧与科技宣布收购Athonet 谷歌发布全球最大视觉语言模型 近日 来自谷歌和德国柏林
  • Python学生信息管理系统【GUI界面版 + 期末报告书 + 功能实现讲解】

    课程设计说明 GUI 使用的是Python自带的 tkinter 模块 无需配置 Python自带的模块直接导包使用即可 包含了增删改查 保存文件 满足 90 大学生期末课程设计需求 运行时在main py文件右键运行即可 完整文件关注私聊
  • 进程间通信--管道通信

    进程间通信 在两个进程之间 每个进程各自有不同的用户地址空间 任何一个进程的全局变量在另一个进程中都看不到 比如 在父进程中的全局变量 如果在子进程中去改变这个全局变量 则子进程中被改变的这个值不会去影响父进程 因为子进程中的所有数据都是通
  • Visual Studio 2022 常用快捷键,记录一下别忘记~

    Visual Studio 2022 常用快捷键 记录一下别忘记 Ctrl E C 注释代码 Ctrl E U 取消注释代码 Ctrl E D 格式化全部代码 Ctrl Shift A 新建类 Ctrl R G 删除无效Using Ctrl
  • RestTemplate的详解

    引言 在SpringCloud微服务中 通过引入 ribbon实现了服务消费者的客户端负载均衡功能 在这个过程中使用了一个非常有用的对象 RestTemplate 该对象会使用 Ribbon 的自动化配置 同时通过配置 LoadBalanc
  • MATLAB 程序设计

    文章目录 前言 一 M文件操作介绍 M文件的创建与打开 1 建立新的M文件 2 打开已有的 文件 3 脚本文件的运行 二 输入输出语句 1 输入函数 input 2 输出函数 display和disp 3 格式化输出函数 fprintf 4
  • 把单元格一分为二_excel如何把一个单元格分成两个 excel单元格拆分为二行

    excel如何把一个单元格分成两个 excel单元格拆分为二行 excel助手 今天为大家分享一篇干货知识 如何设置excel单元格拆分为二行 今天的分享角度是从工作中常用的角度谈的 正如标题提到的 excel如何把一个单元格分成两个 ex
  • 线性代数笔记 2 - 矩阵的初等变换

    矩阵的初等变换 初等行变换 对换两行 对换i j 两行 记作 r i r j
  • abp web.mvc项目中的菜单加载机制

    abp中的菜单加载机制 在abp中菜单的定义与我们传统写的框架不一样 它是在编写代码的时候配置 而我们一般写的通用权限管理系统中 是后期在后台界面中添加的 这一点有很大不同 abp关于菜单的定义及管理挺复杂的 与菜单相关的结构类 接口及扩展
  • ArcGIS Server Linux 10.7压缩包

    ArcGIS Server Linux 10 7压缩包 链接 https pan baidu com s 1GYjElpbXZN0938 vWyWSOA 提取码 nkbp
  • 分享一个去水印接口,完全免费,早点下手啊

    上传到任意空间或者服务器 访问即可用 目前支持很多平台 抖音 快手 皮皮虾 西瓜 红书 微视 最右 哔哩哔哩 皮皮搞笑等常见平台 而且还是免费的 该接口测试 完全免费 如果那天收费了 大家可以直接放弃使用
  • linux下如何清理缓存

    手头的路由本身内存就比较少 上面又跑了一个nginx php的环境 简直慢的爆炸 check的时候发现内存经常被占了很多 linux的虚拟内存机制 很多时候回导致内存得不到及时释放 有时候内存很少了 kill了很多进程 但是内存还是没有释放
  • React_井字棋

    该项目是跟着react官网写的 由于是初学 就只用来记录自己的代码 如果和我一样是初学react建议看官网 react import React from react import ReactDOM from react dom clien
  • C++的范围for语句详解 附易错实例

    博客内容 C 读取一行内个数不定的整数的方式 作 者 陈大大陈 个人简介 一个正在努力学技术的准前端 专注基础和实战分享 欢迎私信 欢迎大家 这里是CSDN 我总结知识和写笔记的地方 喜欢的话请三连 有问题请私信 范围for语句是C 引入的

随机推荐

  • 深度学习做分类时出现list index out of range解决办法之一

    error list index out of range 索引出了问题 首先检查一下自己的数组索引是不是真的有问题 如果没问题就是自己读入的文件里包含不能识别的字符 比如空格 参考 https blog csdn net weixin 3
  • Ubuntu 12.04 下安装ncurses-devel

    解决Ubuntu 12 04 使用 make menuconfig 配置Linux 内核时 出现缺少 ncurses devel 库支持 Unable to find the ncurses libraries or the require
  • Instrusive 【HDU - 5040】【2014 北京 BFS】

    题目链接 一道有着很多需要细节的地方需要注意的题 挺不错的 这题的数据也是给的很好 然后讲一下题意吧 题意 有一个N N的网格 有起点M和终点T 我们从起点需要走到终点 每一步需要花费的时间是单位一 但是呢 我们不能被摄影机拍摄到 摄影机是
  • halcon21.11安装教程详解

    文章目录 1 软件下载 2 安装过程 halcon21 11安装教程详解 1 软件下载 a 官网 https www mvtec com cn b 百度网盘下载 链接 https pan baidu com s 1 Bdz1l54PQWxb
  • Pycharm-Python 下载安装第三方库

    Pycharm Python 下载安装第三方库 一 安装第三方库 00 新建项目 02 两种安装方式 通过代码提示安装 pip install 安装 二 小结 最近我使用 pip install 安装第三方库时出现了一些问题 不知道为什么
  • nvidia自动更新带来的问题

    实验室的ubuntu 14 04 lts server 上的gpu突然不能用了 使用 nvidia smi 查看gpu信息时显示 Failed to initialize NVML GPU access blocked by the ope
  • leetcode 54. 螺旋矩阵 python

    题目描述 题解 1 逆时针的遍历顺序为 右 下 左 上 定义一个directions的list 分别对应这四个方向 如果当前方向的下一个位置到达matrix边界或者已经被访问过 则变换为下一个方向 2 定义一个和输入matrix大小相同的f
  • scala学习-Description Resource Path Location Type value toDF is not a member of org.apache.spark.rdd.R

    编译如下代码时 出现value toDF is not a member of org apache Spark rdd RDD People 错误 val rdd RDD People sparkSession sparkContext
  • 单例模式详解----懒汉式/饿汉式(C++实现)

    单例模式 单例模式是一种常用的软件设计模式 它的核心结构中只包含一个被称为单例的特殊类 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问 从而方便对实例个数的控制并节约系统资源 如果希望在系统中某个类的对象只能存在一个 单
  • 强化学习算法回顾 Q-learning 玩 OpenAI 的 Taxi 游戏

    这里使用的是 OpenAI Taxi V3 环境 这里有 4 个地点 分别用 4 个字母表示 任务是要从一个地点接上乘客 送到另外 3 个中的一个放下乘客 越快越好 成功运送一个客人获得 20 分奖励 每走一步损失 1 分 希望尽快送到目的
  • JVM内存泄露与溢出

    内存泄漏和内存溢出 内存泄露 申请的内存空间没有被正确释放 导致内存空间被占用 并且之后也不会使用 内存溢出 申请的内存空间超过了空闲内存空间 即内存不够使用 所以说 内存泄漏可能会导致内存溢出 我们需要注意有可能会导致内存泄漏的情况 常见
  • 手把手带你linux部署清华大学大模型最新版 chaglm2-6b

    准备工作 下载项目源代码 git clone https github com THUDM ChatGLM2 6B 切换到项目根目录 cd ChatGLM2 6B 安装依赖 pip install r requirements txt 安装
  • 华为免费虚拟服务器,免费虚拟服务器试用一年

    免费虚拟服务器试用一年 内容精选 换一换 本文介绍了存储容灾SDRS各特性版本的功能发布和对应的文档动态 新特性将在各个区域 Region 陆续发布 欢迎体验 购买服务及配置特性时 操作步骤中未框选的配置项请保持默认值 申请服务时 未开通企
  • Ubuntu18.04下OpenCV3.4.11的安装及使用示例

    目录 一 认识 OpenCV 二 安装 OpenCV 1 安装包 2 配置环境 三 使用示例 图片 四 使用示例 视频 1 虚拟机获取摄像头权限 2 播放视频 3 录制视频 五 总结 六 参考资料 安装环境 VMware虚拟机安装的Ubun
  • Pytest系列-失败重跑插件pytest-rerunfailures的使用(9)

    前提条件 以下先决条件才能使用pytest rerunfailures Python 3 5 最高 3 8 or PyPy3 pytest 5 0或更高版本 安装 pip3 install pytest rerunfailures i ht
  • Vue前端项目-首页-获取角色

    目录 Vue端代码 1 前端守卫设置 2 Vuex中定义getter 3 新建 getters js 文件 4 定义 GetInfo 方法获取用户角色信息 5 获取用户信息API 6 请求拦截器 SpringBoot 端 1 Control
  • 操作系统进程管理相关习题

    一 选择题 从静态角度上看 进程是有 A B C 三部分组成 其中 C 是进程存在的唯一标志 当几个进程共享 A 时 A 应当是可重入代码 A B C 1 JCB 2 PCB 3 DCB 4 FCB 5 程序段 6 数据段 7 I O缓冲区
  • 基于OpenCv的人脸识别

    OpenCV 是一个开源的计算机视觉库 它支持多种编程语言 包括 C Python 等 它包含了很多计算机视觉算法和工具 其中包括人脸识别 人脸识别的基本思路是 首先从图像或视频中检测出人脸的位置 然后对人脸进行特征提取 最后根据这些特征来
  • Vue npm run dev 时提示“sh: 1: webpack-dev-server: not found“

    记录自用 在ubuntu下运行项目的时候出现如下问题 经过查找 发现应该是缺少部分模块的原因 通过执行 npm install 成功解决问题
  • eglSwapBuffers

    一般性嵌入式平台 利用双缓冲进行Swap的时候 Display和Surface进行实际意义上的地址交换 来实现eglSwapBuffers的标准 如上图的右侧所示 上图的左侧表示 单缓冲Framebuffer的形式 Surface永远都在后