图元连接方式和实现立体图形及旋转

图元连接方式

图元连接方式,将决定我们的图形展示出来是什么样子:

图元连接方式 释义
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立体图形的实现及移动,
有不足之处请多指教,共勉。

你可能感兴趣的:(图元连接方式和实现立体图形及旋转)