iPad上に65536を超える頂点を持つ3Dオブジェクトを描画しようとしていますが、間違っていることを理解できません。 GL_UNSIGNED_SHORTを使用していた私の元のモデルはうまくいきましたが、GL_UNSIGNED_INTではglDrawElementsコマンドを使って何も表示できません。レンダラーがglDrawElements行を完全に無視しているようです。私が参照してる私のレンダリングループの一部は以下の通りです:インデックスにGL_UNSIGNED_INTを使用して、どのようにglDrawElementsを使用しますか?
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
for (int i = 0; i < assemblyObj->numObjects; i++)
{
glDrawElements(GL_TRIANGLES, assemblyObj->partList[i].faceArray.size(), GL_UNSIGNED_INT, &assemblyObj->partList[i].faceArray[0]);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
頂点として定義されています
vector<float> vertices;
と各faceArrayは以下のように定義されています上の任意の提案
vector<UInt32> faceArray;
ジオメトリが描画されないように間違っているのは何ですか?
これは、glDrawArraysで描画するよりも高速ですか?私は今glDrawArraysでやっていることと同じことをすることができますが、可能な限り多くのFPSでレンダリングしたいと思います。 – Davido
私はそれを理解した、私はちょうどそれが独自の頂点配列を使用して各オブジェクトをレンダリングし、それはうまく動作します。私は合計90個のモデルで約125,000個の頂点をレンダリングしています。これは使用可能で、毎秒約12フレームをレンダリングします。今はレンダリングを高速化するためにできることがあるかどうかを判断しようとしています。助言がありますか? – Davido
この回答は間違っています.GL_UNSIGNED_INTは、GL_OES_element_index_uintが実装されている場合(これはに従ってiOSにあります)、 'glDrawElements'に対してサポートされています。 –