2016-11-30 58 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中(例如,沒有用於片段的固定功能光照管道),所以它很少是一個簡單的「端口」,更多的是需要重寫大塊的渲染引擎...