2

OpenGL アプリケーションを OpenGL ES に変換しようとしました。私はこのようにMacで要素を描いています:

glUseProgram(m_program);

// Update uniform value.
glUniform4f(uniforms[UNIFORM_COLOR], (GLfloat)color[0], (GLfloat)color[1], (GLfloat)color[2], (GLfloat)color[3]);


// Update attribute values.
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, data);
glEnableVertexAttribArray(ATTRIB_VERTEX);

// Validate program before drawing. This is a good check, but only really necessary in a debug build.
// DEBUG macro must be defined in your debug configurations if that's not already the case.

glDrawElements(GL_TRIANGLE_STRIP, count, GL_UNSIGNED_INT, indices);

すべて問題ありませんが、iPhone 4 (iOS 4.2 および XCode 3.2.5) でこの方法で描画しようとすると、何も表示されません。奇妙なことに、すべての計算が完了し、glDrawArrays で描画しようとすると、画面に何かが表示されます (ただし、頂点は正しい順序でレンダリングされません)。

glUseProgram(m_program);

// Update uniform value.
glUniform4f(uniforms[UNIFORM_COLOR], (GLfloat)color[0], (GLfloat)color[1], (GLfloat)color[2], (GLfloat)color[3]);


// Update attribute values.
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, data);
glEnableVertexAttribArray(ATTRIB_VERTEX);

glDrawArrays(GL_TRIANGLE_STRIP, 0, count);

何か不足していますか?

4

2 に答える 2

2

glDrawElementsインデックス配列のタイプとしてのGL_UNSIGNED_INTは、iPhoneでは許可されていません。GL_UNSIGNED_BYTEまたはGL_UNSIGNED_SHORTを使用する必要があります

于 2011-02-12T00:50:17.470 に答える
0

Apple Developers フォーラムで、 OES_element_index_uint ectensionを使用して iPhone で GL_UNSGNED_INT を使用できることを示唆しています。

于 2011-02-12T09:13:58.843 に答える