gpt4 book ai didi

java - OpenGL 显示错误 - 显示不正确

转载 作者:行者123 更新时间:2023-11-30 04:14:35 26 4
gpt4 key购买 nike

我正在学习 OpenGL,但遇到了渲染不正确的问题。这就是我遇到的问题,金字塔两侧之间有间隙。

enter image description here

这是我用来构造的顶点。

// 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);

这产生了这种奇怪的行为,有更多的边被绘制。

enter image description here

渲染了三个面,但只能看到两个!我怎么解决这个问题?我还启用了深度测试。

这是我初始化 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());

最佳答案

glOrtho 设置您的查看区域。由于您的形状适合 1 个正方形单位,但您希望能够看到整个形状,因此您可以设置近距和远距来包围整个形状(2, -2 就是这样做的),或者您可以设置glOrtho 类似于 glOrtho(-1, 1, -1, 1, 0, -5);并将您的形状向后平移,使其位于视野中。

另一个(坏)选项是更改顶点的绝对位置,使它们落在近场和远场内,但我不推荐这样做,因为这通常是平移和变换的重点。

你的意思是让一切都处于正交 View 中还是有透视?正交 View 是翻译最初没有帮助的原因。

关于java - OpenGL 显示错误 - 显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18731895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com