我正在学习 OpenGL,但我遇到了渲染不正确的问题。这就是我遇到的问题,金字塔的两侧之间有间隙。
这是我用来构造的顶点。
// Create Pyramid Vertex Buffer
FloatBuffer vertexBuffer = BufferUtils.createFloatBuffer(3 * 12);
vertexBuffer.put(new float[]
{
// Side one
0f, 0.8f, 0f,
-0.8f, -0.8f, 0.8f,
0.8f, -0.8f, 0.8f,
// Side two
0f, 0.8f, 0f,
0.8f, -0.8f, 0.8f,
0.8f, -0.8f, -0.8f,
// Side three
0f, 0.8f, 0f,
0.8f, -0.8f, -0.8f,
-0.8f, -0.8f, -0.8f,
// Side four
0f, 0.8f, 0f,
-0.8f, -0.8f, -0.8f,
-0.8f, -0.8f, 0.8f
});
vertexBuffer.rewind();
我认为这是因为模型出现在屏幕上。所以我认为在 z 轴上平移应该没问题,我在调用之前添加了这一行glDrawArrays
glTranslatef(0f, 0f, -1f);
这就产生了这种奇怪的行为,绘制了更多的边。
三个侧面都被渲染了,但它应该只看到两个!我怎么解决这个问题?我还启用了深度测试。
这是我初始化 OpenGL 的方法
// Initialize OpenGL
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, 1, -1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(0, 0, Display.getWidth(), Display.getHeight());