0

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

4

1 回答 1

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 让您避免重新发明轮子(而且它运行速度也很快)。
  • GLKEffects(例如GLKBaseEffect)利用 GLKMath 并使用 OpenGL ES 2.0/3.0 着色器复制 OpenGL ES 1.1 固定功能管道。

您发布的代码在 OpenGL ES 1.1 和 2.0/3.0(*) 中同样有效——这些行指定顶点数据并绘制它。OpenGL ES 1.1 中在 2.0(及更高版本)中消失的部分是在您绘制之前出现的附加设置代码——模型视图和投影转换、照明和纹理。

在 OpenGL ES 2.0 及更高版本中,渲染过程的这些部分由着色器处理——您编写的在 GPU 上运行的小程序。GLKBaseEffect为简单的任务实现着色器,或者您可以为自定义效果编写自己的着色器。

您可以通过遵循一些 OpenGL ES 教程来了解有关这些的更多信息。这是一个包含 GLKit 的。您还可以查看 Apple 的OpenGL ES Programming Guide


(*) 以这种方式指定几何图形在 OpenGL ES 2.0+ 中有效,但不推荐。而是查看顶点缓冲区对象(和顶点数组对象)。

于 2013-11-13T21:55:57.373 回答