1

わからない問題があります。

私はシェーダーを持っています

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 で乗算して 1 つの 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);",
        "}" };

シェーダーでそれらを乗算できない理由を誰かに教えてもらえますか?

4

1 に答える 1

2

シェーダーの行列の順序を逆にしてみてください。

gl_Position = uPMatrix * uMVMatrix * vec4(aVertex, 1.0);
于 2011-01-26T16:06:21.960 に答える