从下图中可以看出,我有两个并排的三角形(从前面看)。但是当我从右侧查看它时,黄色三角形显示为好像它位于绿色三角形前面,因为它位于绿色三角形后面(见右图),所以它不应该可见,为什么会发生这种情况?从左边看很好(见左图)。谢谢。
正视图:
右视图(为什么黄色三角形仍然可见?):
左视图(从这里看很好):
这是我的渲染方法。即使我不使用 glColor4f 并以现代方式进行着色,我仍然得到相同的结果。我还设置了 glEnable(GL_DEPTH); 和 glDepthFunc(GL_LESS);
void display(){
glClear(GL_COLOR_BUFFER_BIT);
control(0.2, 0.2, mi);
view = updateCam();
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);
model = glm::rotate(glm::mat4(1.0), 45, glm::vec3(0, 1, 0));
glColor4f(0, 1, 0, 1);
glDrawArrays(GL_TRIANGLES, 0, 3);
resetMatrix();
model = glm::translate(glm::mat4(1.0), glm::vec3(5, 0, 0));
model = glm::rotate(model, 45, glm::vec3(0, 1, 0));
glColor4f(1, 1, 0, 1);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
resetMatrix();
SDL_GL_SwapBuffers();
}