我正在尝试实现一个简单的着色器程序并渲染一组顶点并发生奇怪的错误:
这是关于深度缓冲的吗?我想我之前遇到过类似的问题。
在我的绘制方法中:
// Parameters: GLdouble* vertices, int num_vertices;
Gluint vboId;
glGenBuffers(1,&vboId);
glBindBuffer(GL_ARRAY_BUFFER,vboId);
glBufferData(GL_ARRAY_BUFFER, sizeof(GLdouble) * num_vertices * 3, vertices, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER,vboId);
glVertexPointer(3,GL_DOUBLE,0,NULL);
glEnableClientState(GL_VERTEX_ARRAY);
glUseProgram(shaderProgramId);
glDrawArrays(GL_TRIANGLES,0,num_vertices);
// Shader program
// Vertex
void main(void) {
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
// Fragment
void main(void) {
gl_FragColor = vec4(1.0,0.0,0.0,1.0);
}
答案 0 :(得分:1)
我在没有指示的情况下画画,模特需要指数。正如@Bart在评论中所说。
要解决此问题,请致电:
glDrawElements(GL_TRIANGLES,num_indices * 3, GL_UNSIGNED_INT, indices);
而不是:
glDrawArrays(GL_TRIANGLES,0,num_vertices);