2016-11-30 57 views
0

我正在将应用程序从Windows移至iOS。然后我需要在OpenGL ES中转换“OpenGL”。在原始应用程序中,我使用了glPush/PopAttrib指令,但在OpenGL ES中不存在。有些人在这里讨论替代方案:http://qt.developpez.com/doc/4.7/opengl-hellogl-es/但是他们使用glMatrixMode,它只能在OpenGL ES 1.1(不是2或3)下使用。iOS | OpenGLES 2/3 - glMatrixMode alternative

那么,有人在OpenGL ES 2中有替代glMatrixMode的吗?

为了更加准确:我试图让Qt和OpenSceneGraph上下文一起工作。而且我无法控制着色器中的工作。

+0

将它全部改写为着色器 – Starl1ght

回答

0

OpenGL ES 2.x以后没有固定功能矩阵堆栈支持。如果你想要一个矩阵,你必须自己计算该值并通过glUniformMatrix*()上传一个原始数据。

究竟这是什么矩阵需要是什么的统一符号的“名字”,是完全在你的着色器依赖,以及它们是如何处理的几何变换。通常情况下,应用程序需要连接CPU上的模型视图和/或模型视图投影矩阵,以避免需要对每个顶点进行计算。

OpenGL ES 1.x中存在的许多概念根本不存在于OpenGL ES 2.x中(例如,没有用于片段的固定功能光照管道),所以它很少是一个简单的“端口”,更多的是需要重写大块的渲染引擎...