OpenGL ES GLSL 探索

271 阅读2分钟

OpenGL 与OpenGL ES 的基本概念与历史

与OpenGL ES 的版本

OpenGL ES 1.x :针对固定功能的流水管线硬件

OpenGL ES 2.x :针对可编程流水管线硬件

OpenGL ES 3.x :OpenGL ES 2.0 的扩展

OpenGL ES 渲染上下文和绘制表面

  • 渲染上下文:存储相关的OpenGL ES 状态,也就是openGL 中的修改状态机
  • 绘制表面:用于绘制图元的表面,指定渲染所需要的缓存区类型,eg:颜色缓存区,深度缓存区和模型缓存区.
  • OpenGL ES API 并没有提供如何创建渲染上下文或者上下文如何连接到原生窗口系统,EGL 是KHronos 渲染API (如OpenGL ES) 和原生窗口系统之前的接口,唯一支持OpenGL ES却不支持EGL的平台只有iOS.

EGL 的主要功能

  • 和本地窗口系统(native windowsing system)通讯
  • 查询可用配置
  • 创建OpenGL ES 可用的"绘图表面"(drawing surface)
  • 同步不同类型的API 之间的渲染,比如OpenGL ES 和OpenVG之间的同步,或者在OpenGL和本地窗口的绘图命令之间管理“渲染资源”比如纹理映射(rendering map)

向量介绍

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

矩阵 (mat列x行)

类型描述类型描述类型描述
mat2,mat2x2两⾏两列mat2x3三⾏两列mat2x4四⾏两列
mat3,mat3x3三⾏三列mat3x2二⾏三列mat3x4四⾏三列
mat4,mat4x4四⾏四列mat4x2二⾏四列mat4x3三⾏四列

变量存储限定符

使用案例:

OpenGL ES 错误处理理

GLenum glGetError(void)