1

openglのシェーダーから取得している2つの変数があります。私はこのようなことをします。

    vLoc = glGetAttribLocation(progId,"vPosition");
    nLoc = glGetAttribLocation(progId,"vNormal");

matViewLoc = glGetUniformLocation(progId,"matView");
matProjLoc = glGetUniformLocation(progId,"matProj");
matTranslateLoc = glGetUniformLocation(progId,"matTranslate");

vLocとprojLocは同じ場所を返します。誰かがその理由を知っていますか?ありがとう!

4

2 に答える 2

4

均一な場所と属性の場所のスペースは異なるため、同じ ID を使用できますが、それらは異なるオブジェクトを参照します。

属性の場所を glUniform 関数に渡すことも、均一な場所を attrib 関数に渡すこともできません。

于 2010-11-02T05:22:43.563 に答える
0

glBindAttribLocation を使用してシェーダー プログラムを作成したときに、属性の場所をバインドしましたか?

次のようなものが必要です。

glBindAttribLocation(progId, 0, "vPosition");
glBindAttribLocation(progId, 1, "vNormal");
于 2010-11-01T03:06:41.563 に答える