我对OpenGL ES和GameKit感到有点困惑。
到目前为止,我一直使用OpenGL ES 1.x,我认为它被称为“固定功能管道”。 GameKit适用于OpenGL ES 2.x,它似乎更加复杂,似乎缺乏所有方便的绘图功能。
在OpenGL ES 1.x中,我使用交错的顶点数组绘制三角形或三角形条,如下所示:
glVertexPointer(2, GL_FLOAT, sizeof(Vertex), &va[0].coord);
glColorPointer(4, GL_FLOAT, sizeof(Vertex), &va[0].col);
glDrawArrays(GL_TRIANGLE_STRIP, 0, numVerts);
如果这是“固定功能管道”并且OpenGL ES 2.0没有它,那么你如何在OpenGL ES 2.0或GameKit中绘制一个简单的三角形呢?每个三角形或三角形条都是“着色器”吗?
答案 0 :(得分:0)
我认为你的框架很混乱。
Game Kit与游戏的图形无关;它是关于游戏的社交集成,包括游戏中心,本地多人游戏和语音聊天。
GLKit是一个包含四个主要功能区域的框架,所有这些都与使用OpenGL ES渲染硬件加速图形有关:
GLKView
和GLKViewController
为在屏幕上获取OpenGL ES内容(和动画)所需的设置提供了抽象。您可以将它与OpenGL ES 1.1,2.0或3.0一起使用。GLKTextureLoader
是一个简化的界面,用于将图像数据加载到OpenGL ES纹理对象中。它也可以用于任何OpenGL ES版本。GLKBaseEffect
)使用GLKMath并使用OpenGL ES 2.0 / 3.0着色器复制OpenGL ES 1.1固定功能管道。 您发布的代码在OpenGL ES 1.1和2.0 / 3.0(*)中同样有效 - 这些行指定顶点数据并绘制它。在2.0(及更高版本)中消失的OpenGL ES 1.1部分是绘制之前的附加设置代码 - 模型视图和投影变换,光照和纹理。
在OpenGL ES 2.0及更高版本中,渲染过程的这些部分由着色器处理 - 您编写的在GPU上运行的程序很少。 GLKBaseEffect
为简单任务实现着色器,或者您可以为自定义效果编写自己的着色器。
您可以通过一些OpenGL ES教程了解有关这些内容的更多信息。 Here's one that includes GLKit。您也可以查看Apple的OpenGL ES Programming Guide。
(*)指定几何方式在OpenGL ES 2.0+中有效但不推荐使用。请改为查看顶点缓冲区对象(和顶点数组对象)。