OpenGL
基本功能:几何图形、变换、着色、光照、贴图
高级功能:曲面图元、光栅操作、景深、shader编程
状态机
先设置状态参数:多边形、顶点列表、填充颜色、纹理、混合模式、坐标系
再调用绘图指令
如果没有设置新参数,会一直用当前的状态来绘图,所以是有状态的
OpenGL可以分为客户端和服务端,客户端可以是cpu或主机,服务端是gpu或另一台主机
客户端发送绘图指令,服务端负责绘制渲染,尽量在客户端完成工作,只发送必要数据到服务端,减少传输压力
开启/关闭绘图特性
GL_APICALL void GL_APIENTRY glEnable(GLenum cap); // 开启一个状态
GL_APICALL void GL_APIENTRY glDisable(GLenum cap); // 关闭一个状态
类型GLenum表示OpenGL状态量
全部状态列表定义在gl2.h中
可以开启若干状态来实现特定的绘图效果,之后禁止掉这些状态
比如,剪裁渲染区域需要设置GL_SCISSOR_TEST状态
OpenGL使用右手三维坐标系:屏幕左下角是原点,从原点开始:向右是x正向,向上是y正向,向屏幕对面是z正向
利用坐标描述图形的形状,把形状交给OpenGL来绘制
OpenGL负责把三维空间中的对象通过投影(投影可以粗略想象成光照一个物体,在墙上显示出来的影子)、光栅化(?)转换为二维图像,然后显示在屏幕上
在二维引擎中,z坐标只用来控制游戏元素的前后顺序
cocos2dx绘制精灵
1.根据精灵的位置创建矩形
2.在OpenGL中设置矩形的顶点以及纹理
3.绘制图形,显示在屏幕上
OpenGL初始的坐标系是世界坐标系
绘图坐标系在初始化时和世界坐标系相同
但是可以通过变换函数(平移、旋转、缩放)来改变绘图坐标系
图形绘制在绘图坐标系中,因此平移图形不用改变每个顶点,只用改变绘图坐标系即可
绘制不同位置的不同物体也可以通过改变绘图坐标系来实现
渲染流水线过程:
显示列表、求值器、顶点装配、像素操作、纹理装配、光栅化、片段操作
OpenGL ES 1.0 固定渲染管线 每一个步骤的操作是固定的,只能使用OpenGL提供的渲染模型
OpenGL ES 2.0 可编程着色器shader 可以作为渲染管线中一些部分的替代品 自定义渲染效果
自由控制顶点和片段处理采用的算法
shader包含顶点着色器(顶点的几何变换和光照计算)和片段着色器(处理光栅化得到的像素及纹理)
draw可以分为3个部分:数据部分、初始化纹理、绘图,从而绘制一个带纹理的矩形
也可以通过三角形带来绘制 triangle stripe 参考
数据部分:设置三角形带(矩形)的顶点坐标、纹理坐标、顶点颜色
初始化纹理:从文件中加载纹理到内存,用纹理的属性设置上述纹理坐标中的4个顶点
绘制图片:绑定纹理、设置顶点数组、绘图
绑定纹理:把一个曾经载入的纹理当作当前纹理,以后绘制出的多边形都使用此纹理
设置顶点数组:把上述顶点坐标、纹理坐标、顶点颜色设置进OpenGL中
绘图:glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
参数:绘图模式、起始顶点下标、顶点数量
OpenGL学习(一)基本概念
原文:http://www.cnblogs.com/gamteq/p/3541754.html