Xcode openglesテンプレートを拡張し、仮想es1のものを削除しました。これで、RAMからvertexArrayとindexArrayの両方でモデルをレンダリングでき、次に、vertexArray VBOをgen-、bind-、dataBufferし、通常のRAMポインターをoffset-pointerに変更しました。これはすべて正常に機能しますが、indexArayをBOおよびgen-、bind-、dataBufferに配置し、RAMポインターをオフセットポインターに変更する次のフェーズは失敗します:(
私が気付いていない一般的な落とし穴はありますか?私にとって、VBOを作成できる人は誰でもindexArray-bufferを作成できるはずです...
次のコードはsetupGLで実行されます
glGenBuffers(1, &geometryPtr->vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, geometryPtr->vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(geometryPtr->vertexNormalUV), geometryPtr->vertexNormalUV, GL_STATIC_DRAW);
//
glGenBuffers(1, &geometryPtr->vertexIndicesBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometryPtr->vertexIndicesBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(geometryPtr->indices), geometryPtr->indices, GL_STATIC_DRAW);
次に、レンダリングルーチンの基本的な考え方
glBindBuffer(GL_ARRAY_BUFFER, geometryPtr->vertexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, geometryPtr->vertexIndicesBuffer);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 32, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 32, BUFFER_OFFSET(12));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_TRUE, 32, BUFFER_OFFSET(24));
glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
//
glDrawElements(GL_TRIANGLES, trianglesCount*3, GL_UNSIGNED_SHORT, (void *)offset);
glDrawElements(GL_TRIANGLE_STRIP, triangleStripOffsets[m], GL_UNSIGNED_SHORT, (void *)offset);
助けてください?:)ニールズ