Шейдер умножить матрицы - PullRequest
1 голос
/ 26 января 2011

У меня есть проблема, которую я не понимаю.

У меня есть шейдер

String[] vsSource = new String[] {
        "attribute vec3 aVertex;",
        "attribute vec3 aColor;",

        "uniform mat4 uMVMatrix;",
        "uniform mat4 uPMatrix;",

        "varying vec3 vColor;",

        "void main(void) {",
        "    vColor = aColor;",
        "    gl_Position = uMVMatrix * uPMatrix * vec4(aVertex, 1.0);",
        "}" };

Я установил обе матрицы uMVMatrix и uPMatrix и хочу умножить их нашейдерКогда я пытаюсь это сделать, мой экран остается черным.

Когда я умножаю его на Java и передаю в одну переменную mat4, я вижу свой треугольник.

String[] vsSource = new String[] {
        "attribute vec3 aVertex;",
        "attribute vec3 aColor;",
        "uniform mat4 mvpMatrix;",

        "varying vec3 vColor;",

        "void main(void) {",
        "    vColor = aColor;",
        "    gl_Position = mvpMatrix * vec4(aVertex, 1.0);",
        "}" };

Может кто-нибудь сказать мне, почему яне можете умножить их в шейдере?

1 Ответ

2 голосов
/ 26 января 2011

Попробуйте инвертировать порядок матриц в шейдере, т.е.

gl_Position = uPMatrix * uMVMatrix * vec4(aVertex, 1.0);
...