我有一个非常简单的情况,需要一些我不知道如何在没有模板缓冲区的情况下做的事情(iPhone不支持)。
基本上,我有一个3D模型可以在图像后面绘制。我希望在任何时候都能在其上绘制该模型的轮廓。因此,当它在图像后面时,您可以看到它的轮廓,当它不在图像后面时,您可以看到带有轮廓的模型。
简单地使轮廓工作的选项是用粗线和z偏移绘制模型的线框,然后在其上绘制常规模型。这个问题显然是我需要在模型之后绘制轮廓。
这种方法需要很快,因为我已经推动了很多多边形 - 不再需要以某种方式再次绘制模型。
此外,有什么方法可以确定我的模型目前是否可以看到?也就是说,顶部图像是否在模型的位置处具有不透明部分,或者是否具有透明部分。如果我能够解决这个问题(再次,非常快),那么我可以绘制线框而不是纹理模型,具体取决于它是否可见。
这里有什么想法吗?感谢。
答案 0 :(得分:0)
http://research.microsoft.com/en-us/um/people/hoppe/proj/silmap/是关于此事的技术文件。希望有一种更简单的方法来实现这一目标;)
答案 1 :(得分:0)
这是一个可能产生你想要的效果的一般选项(我有使用OGL但不是iPhone的经验):
方法1
将对象渲染为纯白色的纹理,与场景分开。这将生成一个白色蒙版,用于渲染对象。
将这个直接绘制到具有alpha淡化效果的“完整对象”屏幕上,或者如果你想要你的轮廓,你可以尝试将这个纹理渲染到另一个纹理,略微放大,然后渲染原始“完整物体”将这种放大的纹理遮蔽为纯黑色。这将创建一种可以在场景顶部渲染的轮廓纹理。
方法2
编辑出来。只需阅读“无模板缓冲区”规定即可。
这有帮助吗?
答案 2 :(得分:0)
大部分时间你可以使用alpha通道和渲染到纹理重新创建模板效果,如果你想一想......