2

OS XでArcSynthesisチュートリアルを実行しようとしていますが、glEnableVertexAttribArrayを呼び出した後にOpenGLエラー「無効な操作」が発生します。glEnableClientStateとglEnableVertexAttribArrayでの議論に従って、VBOがバインドされていることを確認しましたが、次に何を確認すればよいかわかりません。

OS X 10.8、OpenGL 3.2プロファイル、およびXcode4.6を使用しています。

チュートリアルで使用されているXMLモデルファイルをロードするクラスを作成しようとしています。コード化されたモデルを描画する以前のプログラムと同じ順序で同じ操作を実行していると思います。しかし、私はどういうわけか違うことや間違ったことをしているに違いありません、そして何を理解することができません。OpenGL 3.2のドキュメントを参照すると、OpenGL実装で許可されている最大値を超えるインデックス値を送信すると無効な操作が発生することがわかりますが、以前使用した0と1を使用しています。

わかりやすくするために、すべてのOpenGLエラーチェックを編集したコードを次に示します。

    glBindBuffer(GL_ARRAY_BUFFER, vertexBufferObject);
    for (int iAttribLoop = 0; iAttribLoop < [attributeAnalyzers count]; iAttribLoop++) {
        AttributeAnalyzer *theAnalyzer = [attributeAnalyzers objectAtIndex:iAttribLoop];
        GLuint theIndex = [theAnalyzer index];
        NSLog(@"theIndex is %d", theIndex);
        glEnableVertexAttribArray(theIndex);
        glVertexAttribPointer(theIndex, [theAnalyzer size], theType, GL_FALSE, 0, dataOffset);
        dataOffset += sizeof(theType)*[theAnalyzer size]*[theAnalyzer vertexCount];
    }
4

1 に答える 1

6

OpenGL 3.2のドキュメントを参照すると、OpenGL実装で許可されている最大値を超えるインデックス値を送信すると、無効な操作が発生することがわかります。

いいえ、そうではありません。それをすることはあなたに与えますGL_INVALID_VALUEあなたがそれを呼び出し、VAOがバインドされていない場合にのみGL_INVALID_OPERATIONによって与えられます。glEnableVertexAttribArray

だからあなたはおそらくそれをするべきです。

于 2013-02-27T01:01:34.827 に答える