2012-01-11 12 views
0

"redbook"でOpenGLを学ぼうとしていますが、今はglMultiDrawElementsをテストしていました。私はすでにglDrawElementsや他の "よりシンプルな"メソッドで作業するコードを手に入れましたが、ここでは動作しなくなりましたが、今は完全に固執しています。私のコードは、キューブを描画することになっている、とacctuallの描画コードを下に掲載されていますglMultiDrawElementsが私のコードを停止

GLfloat verticies[] = {-0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5}; 
glVertexPointer(3, GL_FLOAT, 0, verticies); 
GLubyte front[] = {4, 5, 6, 7}; 
GLubyte left[] = {0, 3, 7, 4}; 
GLubyte right[] = {5, 1, 2, 6}; 
GLubyte back[] = {0, 1, 2, 3}; 
GLubyte bottom[] = {0, 1, 5, 4}; 
GLubyte topp[] = {2, 3, 7, 6}; 
GLvoid *faces[6] = {front, left, right, back, bottom, topp}; 
glMultiDrawElements(GL_QUADS, 4, GL_UNSIGNED_BYTE, faces, 6); 
glFlush(); 

プログラムがココア基づいており、細かいコンパイルが、「EXC_BAD_ACCESS」のために流水で停止します。 glMultiDrawElements(..)の隣に黄色の警告三角形があり、 "互換性のない整数からポインタへの変換"と言っていますが、 "面"配列のポインタを使用していました(少なくとも "赤い本" 。私を助けることはできますか?

答えて

0

glMultiDrawElements()の2番目のパラメータは、サイズの数値ではなく、サイズの配列へのポインタです。これは、コンパイラが整数からポインタへの変換について不平を言っている理由です(Cocoa開発時に警告をエラーに変えるためにコンパイラフラグを有効にしなければならないもう一つの理由です)。私は上記の変更が

GLsizei count[] = {4, 4, 4, 4, 4, 4}; 
glMultiDrawElements(GL_QUADS, count, GL_UNSIGNED_BYTE, faces, 6); 

を読むために信じる

は動作するはずですが、私はここでそれをテストしていません。

関連する問題