图元连接方式
图元连接方式,将决定我们的图形展示出来是什么样子:
图元连接方式 | 释义 |
---|---|
GL_POINTS | 每个顶点在屏幕上都是单独点 |
GL_LINES | 每一队顶点定义一个线段 |
GL_LINE_STRIP | 将所有顶点连接起来 |
GL_LINE_LOOP | 跟GL_LINE_STRIP差不多,多了首尾相连 |
GL_POLYGON | 将点依序连接起来 |
GL_QUADS | 每四个顶点连接在一起,构成四边形 |
GL_QUAD_STRIP | 四点顶点相连,每次复用前四个点的最后两个顶点 |
GL_TRIANGLES | 每三个顶点连接在一起,确定一个正方形 |
GL_TRIANGLE_STRIP | 三个顶点连在一起,每次复用上一组的最后两个点 |
GL_TRIANGLE_FAN | 以第一个顶点为中心,每次复用顶点和相邻的上一个点构成三角形 |
立体图形的实现,同一视口下视图切换
实现的效果如下:
基础框架与基本函数设置可以参考OpenGL渲染正方形,并实现移动
由于我们的图元连接方式不同,当构成立体图形的时候,我们可能不能直接观察出这个立体图形。所以我们调用
void DrawWireFramedBatch(GLBatch* pBatch)
函数将每两点顶点连线进行不同颜色的着色,使我们更容易看出立体图形。
我们利用矩阵变化来完成图形的旋转。我们的模型矩阵需要结合观察者矩阵和物体矩阵(mvp)来确定旋转后的图形渲染到屏幕上的顶点左边位置。这其中产生变化的只有观察者矩阵和物体矩阵。我们的模型矩阵是固定的,所以这里引入了,压榨思想。位于栈底的是我们的单元矩阵x模型矩阵。栈顶的是我们结合观察者矩阵和物体矩阵不断变幻的模型矩阵。我们使用最终变化好的模型矩阵来做视图渲染。最后调用
PopMatrix
,又可以还原我们的模型矩阵。
最后附上demo立体图形的实现及移动,
有不足之处请多指教,共勉。