我是OPENGLES的新手。我有一整天都很无聊的问题。我只想在屏幕上画一个三角形,但我失败了。使用
时总是出错GLfloat vertices[] =
{
0, 0,0,
100,0,0,
0,100,0
};
glVertexPointer(3, GL_FLOAT, 0, vertices);//always get GL_INVALID_ENUM error
我已经检查了文档并且它说如果type不是可接受的值,则生成GL_INVALID_ENUM。但是我将类型设置为GL_FLOAT,为什么它不受支持?它将得到运行错误“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 :(得分:0)
这是因为您向glVertexAttribPointer
提供了错误数量的参数。它需要六个参数。您的方法调用只传递四个。
如果您查看OpenGL-ES docs on glVertexAttribPointer,则可以找到API规范:
void glVertexAttribPointer( GLuint index,
GLint size,
GLenum type,
GLboolean normalized,
GLsizei stride,
const GLvoid * pointer);