【发布时间】:2014-04-16 03:57:41
【问题描述】:
我想在旋转立方体背离相机时交换其面上的纹理;检测这些人脸并不完全等同于,但非常类似于去除隐藏表面。是否可以挂钩到内置的背面剔除功能/深度缓冲区来确定这一点,特别是如果我想将其扩展到更复杂的多边形?
有一个使用here 描述的点积的简单解决方案,但我想知道是否可以挂钩到现有函数。
【问题讨论】:
标签: algorithm 3d rendering webgl
我想在旋转立方体背离相机时交换其面上的纹理;检测这些人脸并不完全等同于,但非常类似于去除隐藏表面。是否可以挂钩到内置的背面剔除功能/深度缓冲区来确定这一点,特别是如果我想将其扩展到更复杂的多边形?
有一个使用here 描述的点积的简单解决方案,但我想知道是否可以挂钩到现有函数。
【问题讨论】:
标签: algorithm 3d rendering webgl
我认为您无法使用内部 WebGL 处理,但即使有可能,它也不是您的最佳方式。这样做需要您的 GPU 逐个三角形地切换当前纹理,弄乱内部缓存等,而且通常 - 我们的 GPU 不喜欢 if 命令。
但是,您可以在启用第一个纹理和面剔除的情况下渲染您的网格,然后将您的剔除面方向设置为相反并使用第二个纹理渲染您的网格。这样,您将在正面和背面三角形上获得不同的纹理。
在我看来 - 如果你有一个使用面部剔除的 correct 网格,你不应该有任何区别,因为你永远不会看到背面,所以它可能有用的唯一方法是透明网格或不那么正确闭合的网格,例如广告牌。如果您想使用这种具有透明度的方法,则需要仔细选择正确的渲染顺序。
【讨论】: