glVertexPointer与GL_INVALID_ENUM得到错误

问题描述:

我是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

这是因为您提供的参数数量错误glVertexAttribPointer。它需要六个参数。您的方法调用只能通过四次。

如果您检查OpenGL-ES docs on glVertexAttribPointer,你可以找到API规范:

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