gpt4 book ai didi

java - 地形在水中闪烁|深度缓冲区精度问题?

转载 作者:行者123 更新时间:2023-12-01 22:05:02 25 4
gpt4 key购买 nike

我的地形中的水有问题,目前只是一个透明蓝色的四边形。

靠近它时,它看起来像这样: enter image description here

如您所见,它非常简单 - 一个代表水的扁平透明四边形。

但是,当我走得更远时,就会发生这种情况: enter image description here

对于那些看不到 GIF 或需要 external link 的人(或者无法理解发生了什么),水周围的地形出现故障。如果你观察足够靠近水面的地方,你会看到水面上方/下方的地形出现故障。

这是我准备 3D View 的代码:

static void ready3D()
{
glViewport(0, 0, Display.getWidth(),Display.getHeight());
glMatrixMode(GL_PROJECTION);

glLoadIdentity();
GLU.gluPerspective(45, (float) Display.getWidth()/Display.getHeight(), 50f, 500f);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
}

有谁知道问题是什么,以及如何提高深度缓冲区的精度(假设深度缓冲区是问题所在)?

最佳答案

很难从 GIF 中看出,但我收集到的是,您正在经历 Z-Fighting 的实例。 .

有几种对于处理 Z-Fighting 往往最有效的解决方案:

  • 提高 Z 缓冲区的分辨率。
  • 调整水和陆地的相对位置,将它们进一步分开,从而减少两个几何体像这样碰撞的机会
  • 利用模板缓冲区来确保正确绘制对象。

我还看到过在处理某些对象时尝试禁用深度测试的解决方案,但这些解决方案几乎从来都不是一个好的通用解决方案。

关于java - 地形在水中闪烁|深度缓冲区精度问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32952892/

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