如何在iPhone上绘制3D模型轮廓? (OpenGL ES)

时间:2009-08-28 18:11:55

标签: iphone opengl 3d

我有一个非常简单的情况,需要一些我不知道如何在没有模板缓冲区的情况下做的事情(iPhone不支持)。

基本上,我有一个3D模型可以在图像后面绘制。我希望在任何时候都能在其上绘制该模型的轮廓。因此,当它在图像后面时,您可以看到它的轮廓,当它不在图像后面时,您可以看到带有轮廓的模型。

简单地使轮廓工作的选项是用粗线和z偏移绘制模型的线框,然后在其上绘制常规模型。这个问题显然是我需要在模型之后绘制轮廓。

这种方法需要很快,因为我已经推动了很多多边形 - 不再需要以某种方式再次绘制模型。

此外,有什么方法可以确定我的模型目前是否可以看到?也就是说,顶部图像是否在模型的位置处具有不透明部分,或者是否具有透明部分。如果我能够解决这个问题(再次,非常快),那么我可以绘制线框而不是纹理模型,具体取决于它是否可见。

这里有什么想法吗?感谢。

3 个答案:

答案 0 :(得分:0)

http://research.microsoft.com/en-us/um/people/hoppe/proj/silmap/是关于此事的技术文件。希望有一种更简单的方法来实现这一目标;)

答案 1 :(得分:0)

这是一个可能产生你想要的效果的一般选项(我有使用OGL但不是iPhone的经验):

方法1

  1. 将对象渲染为纯白色的纹理,与场景分开。这将生成一个白色蒙版,用于渲染对象。

  2. 将这个直接绘制到具有alpha淡化效果的“完整对象”屏幕上,或者如果你想要你的轮廓,你可以尝试将这个纹理渲染到另一个纹理,略微放大,然后渲染原始“完整物体”将这种放大的纹理遮蔽为纯黑色。这将创建一种可以在场景顶部渲染的轮廓纹理。

  3. 方法2

    编辑出来。只需阅读“无模板缓冲区”规定即可。

    这有帮助吗?

答案 2 :(得分:0)

大部分时间你可以使用alpha通道和渲染到纹理重新创建模板效果,如果你想一想......