我想在旋转立方体的面上交换纹理,只要它们背对镜头;检测这些面不完全相同,但非常类似于隐藏表面去除。是否可以挂入内置背面剔除功能/深度缓冲区来确定这一点,特别是如果我想将其扩展到更复杂的多边形?
使用[{3}}描述的点积有一个简单的解决方案,但我想知道它是否可以挂钩现有函数。
答案 0 :(得分:0)
我不认为你可以加入内部WebGL处理,但即使它可能不是最适合你的方式。这样做需要你的GPU在三角形的基础上切换当前纹理,弄乱内部缓存等等。一般来说 - 我们的GPU不喜欢if
命令。
然而,您可以使用第一个纹理和面部剔除来渲染网格,然后将剔除面部方向设置为相反,并使用第二个纹理渲染网格。这样,您将在前后三角形上获得不同的纹理。
正如我想到的那样 - 如果你有一个使用面部剔除的correct
网格你不应该有任何区别,因为你永远不会看到一个背面,所以它是唯一有用的方法用于透明网格或不正确关闭的网格,如广告牌。如果你想使用这种方法透明,那么你需要仔细选择正确的渲染顺序。