glVertexPointer使用GL_INVALID_ENUM获取错误

时间:2011-12-04 17:35:48

标签: opengl-es

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

1 个答案:

答案 0 :(得分:0)

这是因为您向glVertexAttribPointer提供了错误数量的参数。它需要六个参数。您的方法调用只传递四个。

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

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