.3ds ファイルからモデルをレンダリングするクラスを作成しようとしていますが、非常に厄介な問題が発生しています。整数から double のベクトルへのマップ マッピングがあります。
map<int, vector<double> >
異なるマテリアル プロパティを持つ頂点をマッピングするために使用しています。その後、すべてのキーを繰り返し処理し、OpenGL で次のようにレンダリングします。
glPushMatrix();
glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
for(map<int, vector<double> >::iterator iter = myMaterialVertices.begin(); iter != myMaterialVertices.end(); iter++)
{
vector<double> test = iter->second;
glVertexPointer(3, GL_DOUBLE, 0, test.data());
//get the texture coords here
glDrawArrays(GL_TRIANGLES, 0, iter->second.size() / 3);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glPopClientAttrib();
glPopMatrix();
残念ながら、これにより glDrawArrays 呼び出しで毎回エラーが発生し、アドレス 0 を読み込もうとしていることがわかります。これは、null ポインターの問題があることを意味すると解釈したので、データがそこにあることを確認するためにテスト ベクトルを入れました。 . ベクトルは正しくロードされますが、それでも同じエラーが発生します。私は何を間違っていますか?