2011-12-04 69 views
1

我是OPENGLES的新手。我有一整天無聊的問題。我只想在屏幕上繪製一個三角形,但我失敗了。使用glVertexPointer與GL_INVALID_ENUM得到錯誤

GLfloat vertices[] = 
{ 
    0, 0,0, 
    100,0,0, 
    0,100,0 
}; 
glVertexPointer(3, GL_FLOAT, 0, vertices);//always get GL_INVALID_ENUM error 

當我檢查了doc和它說,如果類型不是接受value.But我設置的類型GL_FLOAT是GL_INVALID_ENUM產生,我總是得到一個錯誤,爲什麼不支持?它會得到運行錯誤「OglesExercise.exe中0x691e1df0未處理的異常:0xC0000005:訪問衝突讀取位置0x00000000」。在glDrawArrays方法中如果程序繼續使用GL_INVALID_ENUM運行。 更重要的是,當我改變頂點的類型GLfixed,並使用

glVertexPointer(3, GL_FIXED, 0, vertices); 

沒有錯誤發生,但屏幕顯示什麼,三角形將不會出現在屏幕上。 有人可以幫我解決這個問題嗎?這個問題與平臺有關嗎?我使用的是Windows XP,CPU是AMD Athlon(tm)64 X2雙核處理器5600+。

+0

誰可以幫我....那麼無聊.... – snail

+0

有,相較於2008年此項目設置的任何要求opengl es編程? – snail

回答

0

這是因爲您提供的參數數量錯誤glVertexAttribPointer。它需要六個參數。您的方法調用只能通過四次。

如果您檢查OpenGL-ES docs on glVertexAttribPointer,你可以找到API規範:

void glVertexAttribPointer(GLuint index, 
          GLint size, 
          GLenum type, 
          GLboolean normalized, 
          GLsizei stride, 
          const GLvoid * pointer);