2016-11-30 7 views
0

Я перемещаю приложение из Windows в iOS. Затем мне нужно преобразовать OpenGL в OpenGL ES. В исходном приложении у меня были инструкции 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

Итак, есть ли у кого-то альтернатива для glMatrixMode в OpenGL ES 2?

Чтобы быть более точным: я пытаюсь работать с контекстами Qt и OpenSceneGraph. И у меня нет никакого контроля над тем, что сделано в шейдерах.

+0

Перепишите все это в шейдеры – Starl1ght

ответ

0

В OpenGL ES 2.x не поддерживается поддержка стека с фиксированной функциональной матрицей. Если вы хотите получить матрицу, вы должны сами вычислить ее значение и загрузить одно сырье через glUniformMatrix*().

Именно эта матрица должна быть и что «имя» однородного символа полностью зависит от ваших шейдеров и как они обрабатывают преобразование геометрии. Обычно приложение хочет объединить либо модель-представление, и/или матрицу проекции-проекции на ЦП, чтобы избежать необходимости выполнять вычисления на вершину.

Многие концепции, которые существуют в OpenGL ES 1.x, просто отсутствуют вообще в OpenGL ES 2.x (например, нет конвейера для фиксированных функций для фрагментов), поэтому он редко представляет собой простой «порт» и более необходимо переписать большие куски механизма рендеринга ...