GameKit是否支持使用顶点绘制简单的三角形,就像在OpenGL ES 1.x中一样?

时间:2013-11-13 11:50:25

标签: ios opengl-es opengl-es-2.0 gamekit opengl-es-1.1

我对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中绘制一个简单的三角形呢?每个三角形或三角形条都是“着色器”吗?

1 个答案:

答案 0 :(得分:0)

我认为你的框架很混乱。

Game Kit与游戏的图形无关;它是关于游戏的社交集成,包括游戏中心,本地多人游戏和语音聊天。

GLKit是一个包含四个主要功能区域的框架,所有这些都与使用OpenGL ES渲染硬件加速图形有关:

  • GLKViewGLKViewController为在屏幕上获取OpenGL ES内容(和动画)所需的设置提供了抽象。您可以将它与OpenGL ES 1.1,2.0或3.0一起使用。
  • GLKTextureLoader是一个简化的界面,用于将图像数据加载到OpenGL ES纹理对象中。它也可以用于任何OpenGL ES版本。
  • GLKMath是一组用于高性能矢量和矩阵运算的数据类型和函数。由于OpenGL ES 2.0及更高版本不包含与OpenGL ES 1.1固定功能管道相关的矩阵变换功能,因此您必须自己动手 - GLKMath可以避免重新发明轮子(并且它也可以快速运行)。 / LI>
  • GLKEffects(例如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+中有效但不推荐使用。请改为查看顶点缓冲区对象(和顶点数组对象)。