0

この GLSL シェーダーを Stage3D と AGAL に移植しようとしていますが、うまくいきません。

頂点シェーダー (GLSL)

attribute vec3 aVertexPosition;
    attribute vec4 aVertexColor;

    uniform mat4 uMVMatrix;
    uniform mat4 uPMatrix;

    varying vec4 vColor;

    void main(void) {
        gl_Position = uPMatrix * uMVMatrix * vec4(aVertexPosition, 1.0);
        vColor = aVertexColor;
    }

フラグメントシェーダー (GLSL)

    precision mediump float;

    varying vec4 vColor;

    void main(void) {
        gl_FragColor = vColor;
    }

結果として:

頂点シェーダー (AGAL)

mov vt0.w, vc0.x
mov vt0.xyz, va0.xyz

mov vt1.xyzw, vc1
mul vt5.xyzw, vt1, vc5
m44 op.xyzw, vt0.xyzw, vt5
mov v0.xyzw, va1.xyzw

フラグメントシェーダー (AGAL)

mov oc.xyzw, v0.xyzw

これは、私が実行した命令のトレースです。

(setVertexBufferAt) va0 3 0
(setVertexBufferAt) va1 4 3
(identity setProgramConstantsFromMatrix): vc0 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1
(setProgramConstantsFromMatrix) vc1 1,0,0,0,0,1,0,0,0,0,1,0,0,0,-2,1
(setProgramConstantsFromMatrix) vc5 1.8106601238250732,0,0,0,0,2.4142136573791504,0,0,0,0,-1.0020020008087158,-1,0,0,-0.20020020008087158,0
render drawTriangles + present

しかし、まだ何も見えません。

更新:どうやら問題は、三角形が切り取られていることです。乗算された配列の値は 1.0 より大きいため、切り取られます。したがって、マトリックスを正規化する方法を見つけるか、クリッピングを拡張する必要があります

なにか提案を?

4

1 に答える 1

0

ここで古い投稿を掘り下げますが、今後の検索のために、実際に確認する必要があります。

https://github.com/adobe/glsl2agal

期待どおりに機能します。有効な glsl 頂点/フラグメント シェーダー プログラムを入力として受け取り、有効な agal を出力として吐き出します。

例として: http://www.cmodule.org/glsl2agal/

于 2013-07-16T04:55:46.143 に答える