挂钩到隐藏表面去除/背面剔除以交换WebGL中的纹理



每当旋转立方体的面远离相机时,我都想交换它们上的纹理;检测这些人脸并不完全等同于,但非常类似于隐藏表面去除。是否可以挂入内置的背面剔除函数/深度缓冲区来确定这一点,特别是如果我想将其扩展到更复杂的多边形?

这里描述了一个使用点积的简单解决方案,但我想知道是否有可能连接到现有的函数中。

我不认为您可以挂接内部WebGL处理,但即使有可能,这也不是最好的方法。要做到这一点,你的GPU需要逐个三角形地切换当前纹理,扰乱内部缓存等。一般来说,我们的GPU不喜欢if命令。

但是,可以在启用第一个纹理和面剔除的情况下渲染网格,然后将剔除面方向设置为相反方向,并使用第二个纹理渲染网格。通过这种方式,你可以在正面和背面的三角形上获得不同的纹理。

在我看来,如果你有一个使用面剔除的correct网格,你应该不会有任何区别,因为你永远看不到背面,所以它唯一有用的方法是用于透明网格或不太正确闭合的网格,比如广告牌。如果要将此方法与透明度一起使用,则需要仔细选择正确的渲染顺序。

最新更新