Путаница с идентификационной матрицей - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть следующий вершинный шейдер:

attribute vec4 Position;
attribute vec4 SourceColor;
varying vec4 DestinationColor;
uniform mat4 Projection;

void main(void) {
    DestinationColor = SourceColor;
    gl_Position = Projection * Position;
}

Затем я пытаюсь применить следующую матрицу к Projection униформе:

float matrix[16] = {
    1.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 1.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 1.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 1.0f
};

glUniformMatrix4fv(projectionSlot, 1, GL_FALSE, matrix);

Разве это не должно ничего делать? После этого я больше не вижу свои объекты на экране ...

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Да, это должен быть неоперативный.Если вы удалите умножение проекции, то вы говорите, что она работает нормально?Идеи для пары:

  • Проверка glGetError
  • Проверка состояния компиляции / связи шейдера (glGetShader / Programiv)
  • Связана ли программа во время вызова glUniform?
  • Является ли projectionSlot действительным значением?
0 голосов
/ 03 апреля 2012

Я никогда не использовал матрицы в программировании, но я прошел много курсов по математике. Не знаю, как работает проекция, которую вы используете, но имейте в виду, что проекция x на y сильно отличается от проекции y на x. Попробуйте переключить их, если у вас их нет.

...