位置: 编程技术 - 正文

学习OpenGL-ES: 2 - EGL解析(学习英语)

编辑:rootadmin

推荐整理分享学习OpenGL-ES: 2 - EGL解析(学习英语),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:学习雷锋好榜样,学习化妆的学校,学习计划,学习画动漫人物,学习英语,学习化妆的学校,学习雷锋好榜样,学习通,内容如对您有帮助,希望把文章链接给更多的朋友!

1, 前言

在前文(学习OpenGL-ES: 1 - 像素、颜色、显存、环境初始化和EGL)中提到EGL是本地平台和OpenGL ES之间的抽象层,其完成了本地相关的环境初始化和上下文控制工作,以保证OpenGL ES的平台无关性。主要包含如下工作:

a,选择显示设备

b, 选择像素&#;式。

c, 选择某些特性,比如如果你打算画中国水墨画,你需要额外指定宣纸和毛笔。

d, 申请显存。

e, 创建上下文(Context),上下文本质上是一组状态的集合,描述了在某个特定时刻系统的状态, 用于处理暂停、恢复、销毁、重建等情况;

f, 指定当前的环境为绘制环境 。

总体流程上,EGL按顺序分为若干步骤:

1, 选择显示设备display,即上述的a.

2,指定特性,包括上述的像素&#;式(b)和特定特性(c),根据指定的特性来获取多个满足这些特性的config(比如你指定RGB中的R为5bits,那么可能会有RGB_和RGB_两种像素&#;式均满足此特性),用户从这些可用的configs中选择一个,根据display和config获取绘制用的buffer(一般为显存),即上述的d。

3,使用display、config、buffer来创建context,及即上述的e.

4, 使用display、buffer、context 设置当前的渲染环境,即上述的f.

本文将以Android下EGL的使用为例逐一进行讲解。

2,选择显示设备及确认EGL版本

EGL有1.0、1.1、1.2、1.3、1.4这几个版本,Android中使用的是1.4,EGL提供了查询版本的API,以下为Android中例子:

说明:

1,虽然Android使用(实现)的是EGL 1.4(从打印的版本号中可见), 但在Android 4.2(API )以前的版本没有EGL,只有EGL和EGL,而这两个版本是不支持OpengGL ES 2.x的,因此在老版本中某些ES 2.x相关的常量参数只能用手写的硬编码代替,典型的如设定EGL渲染类型API的参数EGL.EGL_RENDERABLE_TYPE,这个属性用不同的赋&#;指定的不同的渲染API,包括OpenGL,OpenGL ES 1.x, OpenGL ES 2.x,OpenVG等,如果采用ES 2.0,应该设置此&#;为: EGL.EGL_OPENGL_ES2_BIT,但是在Android 4.2之前,没有EGL接口,只能采取手写的硬编码来指定,类&#;: EGL_RENDERABLE_TYPE = 4;

2,egl.eglQueryString()用来查询EGL的相关信息,详见这里: 默认对应手机主屏幕。

3,指定(buffer)特性,获取config

1,构造需要的特性列表

学习OpenGL-ES: 2 - EGL解析(学习英语)

2, 获取所有可用的configs,每个config都是EGL系统根据特定规则选择出来的最符合特性列表要求的一组特性。

说明:

1,display和attributes都来自之前的步骤。

2,eglChooseConfig(display, attributes, configs, num, configNum); 用于获取满足attributes的所有config,参数1、2其意明显,参数3用于存放输出的configs,参数4指定最多输出多少个config,参数5由EGL系统写入,表明满足attributes的config一共有多少个。如果使用eglChooseConfig(display, attributes, null, 0, configNum)这种形式调用,则会在configNum中输出所有满足条件的config个数。

3,一般习惯是获取所有满足attributes的config个数,再据此分配存放config的数组,获取所有config,根据某种特定规则,从中选择其一。

4,API详细说明和所有可指定的attributes见这里: 获取显存

说明:

1,详细的参数说明见这里: 2,参数surfaceHolder是android.view.SurfaceHolder类型,负责对Android Surface的管理,后续将对此进行较详细说明,参看第8小节。

3,参数4用于描述WindowSurface类型,初始化方式如同前面小节的egl attributes, 其中一个attribute是EGL_RENDER_BUFFER, 用于描述渲染buffer(所有的绘制在此buffer中进行)类别,取&#;为EGL_SINGLE_BUFFER以及默认的EGL_BACK_BUFFER,前者属于单缓冲,绘制的同时用户即可见;后者属于双缓冲,前端缓冲用于显示,OpenGL ES 在后端缓冲中进行绘制,绘制完毕后使用eglSwapBuffers()交换前后缓冲,用户即看到在后缓冲中的内容,如此反复。其他attributes见官方文档。

5, 创建context

说明:

函数原型 EGLContext eglCreateContext(EGLDisplay display, EGLConfig config, EGLContext share_context, int[] attrib_list);

share_context: 是否有context共享,共享的contxt之间亦共享所有数据。EGL_NO_CONTEXT代表不共享。

attrib_list: 目前可用属性只有EGL_CONTEXT_CLIENT_VERSION, 1代表OpenGL ES 1.x, 2代表2.0。同样在Android4.2之前,没有EGL_CONTEXT_CLIENT_VERSION这个属性,只能使用硬编码0x代替。

函数详细描述: 设置为当前的渲染环境

比较简单,不做赘述,详细描述: ES 2.0 API 进行绘制。8,关于SurfaceHolder

一般在Android中使用OpenGL ES,总是会从GLSurfaceView和Renderer开始,但是由上面描述的过程可知,只需要提供一个合适的SurfaceHolder,就可以完成整个环境初始化,并进行绘制。GLSurfaceView和Renderer事实上只是在本文描述的基础上封装了一些便利的功能,便于开发者开发,比如渲染同步、状态控制、主(渲染)循环等。那么,如何提供一个SurfaceHolder,具体的Surface分配过程又是怎样的呢,这涉及到Android窗口机制,属于比较大的话题,将在下一节进行描述。

原文链接

opengl extension 如果你在Windows平台下开发OpenGL程序,那么系统中自带的OpenGL库就是1.1的,如果想使用1.2或者更高版本的OpenGL库,那么只能使用OpenGL扩展,在网上关于如

OpenGL简单绘制游戏角色阴影 在游戏开发中很多Q版游戏绘制角色阴影会简单的绘制一个半透明的椭圆,如下图:这种方法的优点是实现简单,但表现效果明显不够真实。作为Q版风尚

OpenGL中的光照与材料 OpenGL中的光照与材料在OpenGL光照模型中,除非一个物体自己会发光,否则它将受到3种不同类型的光的照射,这3种不同类型的光分别是:环境光(ambient

标签: 学习英语

本文链接地址:https://www.jiuchutong.com/biancheng/373166.html 转载请保留说明!

上一篇:高度图地形读取与漫游(地形图高程点坐标高程提取)

下一篇:opengl extension

  • 个人所得税可以不交税吗
  • 固定资产入账怎么做账
  • 没达到起征点需要申报吗
  • 应收利息增加会计分录
  • 业务招待费可以进成本吗
  • 物流运输业务
  • 租赁个人汽车
  • 加计抵减怎么入账
  • 在建工程在现金流量表中
  • 免抵退税的计算数据
  • 土地出让金评估费怎么算
  • 事业单位代扣社保公积金分录怎么写的
  • 结算本月应付职工薪酬,其中生产工人工资为18000
  • 车辆购置税会计账务处理
  • 全资子公司需要设立股东会吗
  • 出口退税可以不申报是否需要缴纳增值税
  • 小规模企业超过500万营业额
  • 未交社保的员工需要交个税吗
  • 电子发票真伪查询
  • 企业不合规发票责令补开处理
  • 企业投资股票取什么名字
  • 广告公司返点是什么意思
  • 公允价值变动损益借贷方向
  • 修改远程桌面端
  • 怎么解决笔记本电脑卡顿问题
  • 空头支票怎么办
  • qbupdate.exe - qbupdate是什么进程 有什么作用
  • php数组有哪几种类型
  • 推广费开票属于什么费用
  • ccc.exe是什么进程
  • 自产货物用于生产
  • 政策性搬迁会计处理案例
  • 废旧物资处理计入什么科目
  • 职工重大疾病保险包括哪些
  • 固定资产残料收税吗
  • 集团公司管理费提取办法
  • 工会经费是如何计提的
  • 收到社保稳岗补贴转入营业外收入要交企业所得税吧
  • 个人简历html网页代码含效果图
  • 【简陋Web应用2】人脸检测——基于Flask和PaddleHub
  • install PostgreSQL Community Ubuntu Documentation
  • 微擎框架开发小程序
  • 网络课平台用交税吗
  • 体检费专票可以抵扣吗
  • 商业承兑到期后有效期
  • 跨国公司海外子公司
  • PostgreSQL教程(三):表的继承和分区表详解
  • mongodb添加环境变量
  • 行政性收费属于什么科目
  • 公司个人所得税申报操作流程
  • 收到天使投资账务处理
  • 解决PostgreSQL服务启动后占用100% CPU卡死的问题
  • 企业汇算清缴的工资薪金支出是怎么填
  • 无法收回的应收账款怎么做分录
  • 公司员工入职的心得体会
  • 装修费用会计科目
  • 投资性房地产折旧和摊销的区别
  • 城市综合配套
  • 对公账户转账给法人怎么做账
  • 固定资产如何管理可以做到节能减排
  • mysql根据时间查询最新一条数据
  • mysql删除表数据怎么恢复
  • win7如何共享文件夹给另一台电脑使用
  • win7自带xp虚拟机怎么安装驱动
  • ubuntu16设置启动项
  • mac系统怎么删除用户
  • windows 10的应用商店中的应用
  • mac怎么安装安装包
  • mac安全设置在哪里
  • linux中安装命令
  • 在win7上加装一个硬盘不显示
  • 计算机图形学是什么专业
  • 拖曳对象时用的命令
  • 谈谈对人才是第一资源的理解
  • jquery 异步提交表单
  • jquery轮播图原理
  • eclipse自动生成
  • 济南特色没事
  • 郑州市地税局局长
  • 转租房子转租人需要签合同吗合法吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设