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+。
答
这是因为您提供的参数数量错误glVertexAttribPointer
。它需要六个参数。您的方法调用只能通过四次。
如果您检查OpenGL-ES docs on glVertexAttribPointer,你可以找到API规范:
void glVertexAttribPointer(GLuint index,
GLint size,
GLenum type,
GLboolean normalized,
GLsizei stride,
const GLvoid * pointer);
谁可以帮我....那么无聊.... – snail
有,相较于2008年此项目设置的任何要求opengl es编程? – snail