【问题标题】:How can I draw 3D model outlines on the iPhone? (OpenGL ES)如何在 iPhone 上绘制 3D 模型轮廓? (OpenGL ES)
【发布时间】:2009-08-29 06:18:42
【问题描述】:

我遇到了一个非常简单的情况,如果没有模板缓冲区(iPhone 不支持),我不知道该怎么做。

基本上,我有一个在图像后面绘制的 3D 模型。我希望始终在其上绘制该模型的轮廓。所以当它在图片后面时,你可以看到它的轮廓,当它不在图片后面时,你可以看到带有轮廓的模型。

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

这种方法需要很快,因为我已经在推动很多多边形 - 以一种或另一种方式再次全面绘制模型并不是真正需要的。

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

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

【问题讨论】:

    标签: iphone opengl 3d


    【解决方案1】:

    如果您考虑一下,大多数时候您可以使用 Alpha 通道和渲染到纹理重新创建模板效果...

    【讨论】:

      【解决方案2】:

      http://research.microsoft.com/en-us/um/people/hoppe/proj/silmap/ 是关于此事的技术论文。希望您有更简单的方法来完成此操作;)

      【讨论】:

      • 这超出了我的范围。 :-) 非常感谢您的建议。
      【解决方案3】:

      这是一个可能产生您想要的效果的通用选项(我有使用 OGL 的经验,但没有使用 iPhone):

      方法一

      1. 将对象渲染为纯白色,与场景分离。这将在要渲染对象的地方生成一个白色蒙版。

      2. 要么使用 alpha 淡入淡出将其直接绘制到屏幕上以获得“完整对象”,要么如果您想要绘制轮廓,您可以尝试将这个纹理渲染到另一个纹理,稍微放大,然后渲染原始“完整对象”在这个放大的纹理上着色为纯黑色。这将创建一种可以在场景顶部渲染的轮廓纹理。

      方法二

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

      这有帮助吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-24
        • 1970-01-01
        • 1970-01-01
        • 2021-09-07
        • 1970-01-01
        • 1970-01-01
        • 2013-03-25
        • 2018-08-26
        相关资源
        最近更新 更多