着色器乘以矩阵

时间:2011-01-26 15:59:39

标签: java opengl-es shader vertex-shader

我有一个我不明白的问题。

我有一个着色器

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);",
        "}" };

我设置了矩阵uMVMatrixuPMatrix,我希望在着色器中将它们相乘。当我尝试时,我的屏幕保持黑色。

当我在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 个答案:

答案 0 :(得分:2)

尝试颠倒着色器中矩阵的顺序,即

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