OpenGL ES 2.0 编程指南 学习

这篇博客总结了OpenGL ES 2.0的编程基础,包括绘图管线、Shader编程、数据类型与变量、顶点属性、图元组装与光栅化、顶点着色器和纹理应用。讲解了Shader语言中的数据类型、顶点属性的绑定与赋值,以及绘制过程中的裁剪、透视变换、视口转换和反走样等关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenGL ES 2.0 Programme Guide 

基础内容学习小结

1. OverView 

ES2.0绘图管线示意图:

VertexArray 绘图场景中所有的物体空间位置由点坐标数组构成。

VertexShader: 对每个点的位置进行变换计算光照方程式生成每点的颜色,生成或者变换纹理坐标。基本结构示意图:

Attributes  ---- 采用点向量数组形式传入的每个点的数据。

Uniforms  ---- vertex shader 使用常量数量。

Sampler  ---  表示纹理的特殊常量。可选。

Varying Variable -- Vertex Shader的输出变量,作为Fragment Shader的输入。必须与Fragment Shader中的输入Varying一一对应。

gl_Position 是每个点固有的Varying .表示点的空间位置。

Primitive Assembly : 管线中这个流程是对所有的点数据进行点线面等基础图元的组装。这个过程会对所有的图元进行剪切和筛选。对于不在视区空间中的部分进行剪切,对于不可见的面进行筛选。

Rasterization : 光栅化的过程就是对所有的经过Primitive Assembly图元转换成屏幕上可以显示的二维Fragment。 

Fragment Shader:通过shader程序对Fragment进行处理。基本结构如下图:

Per-Fragment Operations :每个Fragment的操作。每个Fragment在屏幕上都有一个显示坐标(wx,wy)。基本流程:

这些流程基本是一些在frame buffer 中的2D像素操作。 

2  OPENGL ES 2.0 1.1的兼容性

2.01.1 不兼容。

1.1 几乎可看作是OPENGL的子集。采用固定管线编程。

2.0 则全部采用Shader语言来操作。

3  EGL 

ES2.0绘图需要一个上下文context 和 绘图surface . Context用来存储ES2.0的管线状态机,surface则表示绘图的缓冲及其属性。EGL是一个介于OPENGL ES 绘图语言和本地视窗系统之间的中间层。因此EGL使得OPENG ES 的平台无关性。

基本流程:

1) Query the displays that are available on the device and initialize them. 

2) Create a rendering surface.

3) Create a rendering context.   Attach context before start doing graphic .

Eg:

eglDisplay = eglGetDisplay((EGLNativeDisplayType)0); //获取默认显示设备

eglInitialize(eglDisplay, &iMajorVersion, &iMinorVersion); //初始化,返回版本号

eglChooseConfig(eglDisplay, pi32ConfigAttribs, &eglConfig, 1, &iConfigs); //选择一个配置。eglConfig是返回的配置,pi32ConfigAttribs是输入的配置属性,是一个int数组,以key-value的顺序存放属性和值。

eglSurface = eglCreateWindowSurface(eglDisplay, eglConfig, (EGLNativeWindowType) NULL, NULL);//根据egl配置创建显示Surface

eglContext = eglCreateContext(eglDisplay, eglConfig, NULL, pi32ContextAttribs); //根据egl配置和上下文

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值