2011-02-11 56 views
2

我試圖將我的OpenGL應用程序轉換爲OpenGL ES。我吸取了蘋果的元素是這樣的:glDrawElements不能在iPhone上工作,但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); 

// 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和3.2.5的XCode)我什麼都看不見。奇怪的是,所有的計算完成後,當我嘗試與調用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); 

我錯過了什麼?

回答

2

GL_UNSIGNED_INT作爲glDrawElements指數數組的類型在iPhone上是不允許的。我必須使用GL_UNSIGNED_BYTE或GL_UNSIGNED_SHORT

0

在蘋果開發者論壇上,我有去暗示GL_UNSGNED_INT可以在iPhone上使用使用OES_element_index_uint ectension

+0

不完全是。如果實現實際支持它,OES_element_index_uint擴展只恢復對GL_UNSIGNED_INT的支持,即您必須先檢查GL_EXTENSIONS中是否存在該字符串。你會發現該擴展實際上並不在iPhone上。 – Pivot 2011-02-12 16:59:08

相關問題