как передать матрицы View / Model / Projection в мой вершинный шейдер в OpenGL ES 2.0? - PullRequest
2 голосов
/ 14 июля 2009

В OpenGL ES 2.0 , вы, очевидно, не можете сделать

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

больше, чтобы установить матрицу модели, но я думаю, что эти матрицы все еще как-то встроены, поскольку спецификация GLSL говорит вам, как получить к ним доступ в вершинном шейдере.

// 
// Matrix state. p. 31, 32, 37, 39, 40. 
// 
uniform mat4  gl_ModelViewMatrix; 
uniform mat4  gl_ProjectionMatrix; 
uniform mat4  gl_ModelViewProjectionMatrix; 

так как мне передать эти значения моему шейдеру? мне использовать glUniformMatrix4fv как-нибудь?

Исходный код из OpenGL ES 2.0 Руководство по программированию был полезен для шейдерной части, но все примеры, по-видимому, просто оставляют матричные преобразования в покое и просто проверяют, что их вершины находятся между -1.0 и 1.0 .

ОБНОВЛЕНИЕ: очевидно, Язык шейдеров OpenGL ES не не поддерживает предопределенные записи, такие как gl_ModelViewMatrix, поэтому единственный ответ - определить собственную модель / представление / матрицы проекций, как в приведенном ниже коде, с использованием glGetUniformLocation и glUniformMatrix4fv. Я был смущен, потому что OpenGL Shader Builder поддерживает их, но это просто OpenGL, а не OpenGL ES.

Ответы [ 2 ]

1 голос
/ 14 июля 2009

Согласно его комментарию, эта ссылка дала достаточно информации, чтобы решить его проблему.

0 голосов
/ 20 декабря 2010

gl_ModelViewProjectionMatrix, по-видимому, не соответствует спецификации " OpenGL ES Shading Language version 1.00". Кажется, существует много спецификаций языка шейдинга, так что это, вероятно, стало причиной путаницы. Насколько я понимаю, вы сами определяете униформу для хранения матрицы.

...