我写了一个代码使用 glDrawElement 来绘制一个矩形:
Vertex verticesData[] =
{
Vertex( Vector3 (-0.5f, -0.5f, 0.0f) , Vector3 (1.0f, 0.0f, 0.0f) ), //0
Vertex( Vector3 (-0.5f, 0.5f, 0.0f ) , Vector3 (0.0f, 1.0f, 0.0f) ), //1
Vertex( Vector3 (0.5f, 0.5f, 0.0f ) , Vector3 (0.0f, 0.0f, 1.0f) ), //2
Vertex( Vector3 (-0.5f, -0.5f, 0.0f) , Vector3 (0.5f, 0.5f, 0.5f) ) //3
};
GLubyte indices[] =
{
0, 1, 2, //1
0, 2, 3 //2
};
glGenBuffers(1, &vboId);
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, sizeof(verticesData), verticesData, GL_STATIC_DRAW);
glGenBuffers(1, &indexBufferId);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indexBufferId);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
这是在 Init() 函数中。并且程序在运行到代码行时会出现运行时错误(访问冲突):
glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_BYTE, NULL);
该语句在 Draw() 函数中。我的代码很长,所以我不能在这里发布我的所有代码,但是如果我使用 glDrawArray 替换上面的 2 个代码块,就没有错误。所以我认为问题出在上面的代码中。谁帮我解决这个问题