gpt4 book ai didi

OpenGL Z-Biasing(多边形偏移)限制

转载 作者:行者123 更新时间:2023-12-04 06:31:09 25 4
gpt4 key购买 nike

我有两个共面的多边形。

我试着做。

glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(0,1);

并期望一个明显“在”另一个之上。

在距离大约 70-75 个单位之前都是这种情况(近剪裁平面为 1,远剪裁平面为 10,000)。然后是大约 50 个单位的区域,其中有 z-fighting,然后交替多边形似乎出现在顶部。

多边形偏移是在正常 z 计算之前还是之后添加的?如果是在之后,我会认为它会在所有距离“正常工作”。

我是否使用了错误的值?我误解了预期的结果吗?或者这应该有效,而我可能在其他地方做错了什么?

我不敢尝试更大的值,因为场景中还有其他物体,如果数量足够大,它们也可以远距离“跳”到这些物体前面。

最佳答案

我没用过 glPolygonOffset ,但我只是在 official FAQ 中阅读了它——如果你还没有看过这个,必读。还有man page .

根据该引用,偏移量是在正常 Z 计算之后计算的,但在深度测试之前和写入深度缓冲区之前应用。

我能想到两个问题。首先,FAQ 建议您使用 glPolygonOffset(1,1) ,不是 (0,1) .第一个“因子”参数乘以多边形的斜率并添加到偏移量。这对于“边上”多边形显然很重要。如果多边形面向相机,则无所谓,但如果它处于某个角度,则需要将其向前插入的量会随着角度的增加而增加。

其次,您是否只为其中一个多边形启用偏移?如果您为两者都启用了它(或忘记禁用它),那么它将适用于两个多边形,并且净效果为零。

第三,我怀疑你的深度缓冲区太大(因为深度缓冲区有一个双曲线尺度,有利于靠近相机的物体)。鉴于 glPolygonOffset,我对此不太确定。应该使用深度值,而不是 Z 值(因此深度缓冲区的比例不应该是这里的一个因素)。您可能想尝试使用更短的深度缓冲区(可能是 1000),看看是否有所不同。

关于OpenGL Z-Biasing(多边形偏移)限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5400047/

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