深入浅出OpenGL ES核心概念

更新:11-23 神话故事 我要投稿 纠错 投诉

各位老铁们好,相信很多人对深入浅出OpenGL ES核心概念都不是特别的了解,因此呢,今天就来为大家分享下关于深入浅出OpenGL ES核心概念以及的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

OpenGL ES 为硬件加速2D 和3D 图形渲染提供基于C 的接口。 iOS 中的OpenGL ES 框架(OpenGLES.framework) 提供了OpenGL ES 规范版本1.1、2.0 和3.0 的实现。

OpenGL ES 的版本

OpenGL ES 1.X:用于固定功能管线硬件OpenGL ES 2.X:用于可编程管线硬件OpenGL ES 3.X:OpenGL ES 2.0 的扩展

我们通常使用2.0或3.0。 OpenGL ES命令需要渲染上下文绘制表来完成图形图像的绘制。

渲染上下文:存储相关的OpenGL ES状态。绘制表:用于绘制图元的表面。指定渲染所需的缓冲区类型,如颜色缓存区、深度缓冲区、模板缓存区。 OpenGL ES API 不提供如何创建渲染上下文或上下文如何连接到本机窗口系统。

EGL(Embedded Graphics Library)嵌入式图形库

EGL 是Khronos 渲染API(例如OpenGL ES)和本机窗口系统之间的接口。唯一支持OpenGL ES 但不支持EGL 的平台是iOS。 iOS支持EAGL,其功能与EGL基本相同。

EGL的主要功能:与本机窗口系统通信。查询可用的配置。创建可供OpenGL ES 使用的“绘图表面”,以在不同类API 之间同步渲染,例如OpenGL ES 和OpenVG 之间,或者OpenGL 和本地窗口的绘图命令之间。管理“渲染资源”,例如纹理映射(渲染图)。 EAGL 提供了封装所有OpenGL ES 状态的图形上下文以及将核心动画层配置为OpenGL ES 绘图命令的目标的能力。 EAGL 还允许OpenGL ES 对象(例如纹理、渲染缓冲区和帧缓冲区)在两个或多个图形上下文之间共享。

OpenGL ES中向量数据类型

类型描述vec2、vec3、vec42 分量、3 分量、4 分量浮点向量ivec2、ivec3、ivec42 分量、3 分量、4 分量整数向量uvec2、uvec3、uvec42 分量、3 分量、4 分量无符号整数类型向量bvec2、bvec3、bvec42 分量、3 分量、4 分量bool 类型向量

矩阵数据类型

类型说明mat2、mat2x2 两行两列mat3、mat3x3 三行三列mat4、mat4x4 四行四列mat2x3 三行两列mat2x4 四个mat3x2 两行三列mat3x4 四行三列mat4x2 两行四列mat4x3 三行四列注:mat 列x 行

变量存储限定符

限定符描述只是一个普通的局部变量,外部不可见,外部不可访问。 const 是编译后的常量,或者是函数的只读参数in/variing 前一阶段传递的变量in/variing centroid 从前一阶段传递的变量,使用质心插值传递到下一个处理阶段out/attribute,或函数中指定的返回值out/attribute centroid 传递到下一个处理阶段,centroid interpolation 来自客户端代码的统一传递的变量在顶点之间不会改变。

OpenGL ES 错误处理

如果未正确使用OpenGL ES 命令,应用程序将生成错误代码。这个错误码会被记录下来,可以用glGetError来查询。在应用程序使用glGetError 查询查询第一个错误代码之前,不会记录其他错误代码。一旦查询到错误代码,当前错误代码将重置为GL_NO_ERROR。

GLenum glGetError(void)

错误代码描述GL_NO_ERROR 自上次调用glGetError 后没有生成错误GL_INVALID_ENUMGLenum 参数超出范围,忽略生成的错误命令GL_INVALID_VALUE 数字参数超出范围,忽略生成的错误命令GL_INVALID_OPERATION 特定命令无法在当前OpenGL 中执行ES 状态GL_OUT_OF_MEMORY 内存不足时执行命令,如果遇到此错误,则认为OpenGL ES 管道的状态未定义,除非当前错误代码为

顶点着色器可用的内置变量如下表:

名称类型说明gl_Colorvec4 输入属性- 表示顶点的原色gl_SecondaryColorvec4 输入属性- 表示顶点的辅助颜色gl_Normalvec3 输入属性- 表示顶点的法线值gl_Vertexvec4 输入属性- 表示对象空间中的顶点位置gl_MultiTexCoordnvec4 输入属性- 表示顶点的第n 个纹理的坐标gl_FogCoordfloat 输入属性- 表示顶点的雾坐标gl_Positionvec4 输出属性- 表示变换后的顶点的位置,用于后续的固定裁剪等操作。所有顶点着色器都必须写入该值。 gl_ClipVertexvec4 用于剪切用户剪切平面的输出坐标gl_PointSizefloat 点的大小gl_FrontColorvec4 正面主色的变化输出gl_BackColorvec4 背面主色的变化输出gl_FrontSecondaryColorvec4 正面辅色的变化输出gl_BackSecondaryColorvec4 正面主色的变化输出背面辅助颜色gl_TexCoord[]vec4 纹理坐标变化输出数组gl_FogFragCoordfloat 雾坐标变化输出

片段着色器的内置变量如下表:

名称类型描述gl_Colorvec4 包含主色的插值只读输入gl_SecondaryColorvec4 包含辅助色的插值只读输入color gl_TexCoord[]vec4 包含纹理坐标数组的插值只读输入gl_FogFragCoordfloat 包含雾坐标的插值只读输入gl_FragCoordvec4 只读输入,x、y、z 和1/wgl_FrontFacingbool 只读输入窗户。如果是窗口正面图元的一部分,则该值为truegl_PointCoordvec2 点精灵的二维空间坐标范围在(0.0, 0.0) 和(1.0, 1.0) 之间,仅在点图元和点精灵翻转时使用在。 gl_FragData[]vec4 使用glDrawBuffers 输出的数据数组。不能与gl_FragColor 一起使用。 gl_FragColorvec4输出的颜色用于后续的像素操作。 gl_FragDepthfloat输出的深度用于后续的像素操作。如果不写入该值,则使用固定功能管道的深度值。

OpenGL ES纹理绘制大致流程

1. 使用CAEAGLLayer 作为绘图层。

2. EAGLContext 作为当前上下文:

3. 清除renderBuffer和frameBuffer。使用的函数:

4.设置渲染缓冲区

5.设置帧缓冲区

6. 画画

前五个步骤都是准备工作,大部分操作都在6、绘制这一步:

视口设置、创建、加载和编译着色器(顶点和片段)程序、链接程序、使用程序、传输顶点数据、加载纹理、绘制和渲染到屏幕。经过这一系列的操作之后,图片就可以绘制的更加复杂了。

让我们简单看一下这里的步骤,然后继续阅读下一篇文章《OpenGL ES 纹理绘制》的详细内容。

用户评论

夜晟洛

想要学做手机游戏?那这篇文章刚好!

    有16位网友表示赞同!

我家的爱豆是怪比i

想了解把图片渲染到屏幕上怎么实现的,这个基础概念很重要!

    有15位网友表示赞同!

别伤我i

OpenGL ES 的学习之路从这里开始啊!

    有9位网友表示赞同!

爱你的小笨蛋

感觉游戏开发的舞台就在眼前了!

    有20位网友表示赞同!

放肆丶小侽人

入门级的教程就这?看一看没坏处吧!

    有15位网友表示赞同!

墨城烟柳

好多游戏都是用 OpenGL ES 做出来的,理解它的基础概念很重要。

    有8位网友表示赞同!

刺心爱人i

以后做游戏可以参考这个学习一下!

    有7位网友表示赞同!

余温散尽ぺ

感觉opengl es 听起来很高端的样子。

    有7位网友表示赞同!

强辩

我之前也看过一点 OpenGL 的资料,希望能再深一些了解。

    有18位网友表示赞同!

古巷青灯

移动端游戏的开发,这个概念是必备的啊!

    有8位网友表示赞同!

坏小子不坏

学习一下这基础知识,将来做点儿游戏啥的也不难吧。

    有16位网友表示赞同!

寂莫

OpenGL ES 是个很重要的技术!

    有20位网友表示赞同!

青瓷清茶倾城歌

想制作自己的3D模型吗?这篇教程能让你入门!

    有8位网友表示赞同!

掉眼泪

这些基本概念真的一定要弄懂啊!

    有6位网友表示赞同!

浮世繁华

看这个标题,感觉可以打开一个新的世界!

    有19位网友表示赞同!

疯人疯语疯人愿

我的游戏开发梦开始了!

    有16位网友表示赞同!

大王派我来巡山!

以前从来没接触过 OpenGL ES,感觉挺新奇的!

    有11位网友表示赞同!

寒山远黛

学习这基础概念,也许以后就能自己写3D程序了呀!

    有10位网友表示赞同!

┲﹊怅惘。

终于找到一篇关于OpenGL ES 的基础教程了!

    有9位网友表示赞同!

【深入浅出OpenGL ES核心概念】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活

上一篇:Android应用程序加固方法研究(篇三) 下一篇:探寻高考背后的仪式感文化