使用 OpenGL ES 绘制 3D 模型的轮廓

Draw the outlines of a 3D model with OpenGL ES

我需要添加这个经典效果,它包括通过勾勒轮廓来突出显示 3D 模型,例如像这样(没有透明渐变,只有实心笔触):

我找到了一种方法 here,它看起来非常简单且易于实施。这家伙正在玩弄模板缓冲区来计算模型形状,然后他正在使用线框绘制模型,线条的粗细正在完成这项工作。 这是我的问题,线框。我正在使用 OpenGL ES 2.0,这意味着我无法使用 glPolygonMode 将渲染模式更改为 GL_LINE

我被困在这里,我找不到任何简单的替代方法,我目前找到的最相关的解决方案是自己实现线框渲染,这显然不是最简单的解决方案。为了绘制我的对象,我使用 glDrawElementsGL_TRIANGLES 作为原始对象,我尝试使用 GL_TRIANGLE_STRIP 作为原始但结果肯定不是正确的。

任何 idea/trick 可以绕过 OpenGL ES glPolygonMode 的缺失?提前致谢。

在 OpenGL ES 2 中为模型绘制轮廓或边框并不像您提到的示例那样直接。

方法一: 最简单的方法是分多次进行。

第 1 步(Shape Pass):仅渲染对象并使用相同的相机设置将其绘制为黑色。并用不同的颜色绘制所有其他像素。

第 2 步(渲染通道):这是通常的渲染通道,您实际上以真实颜色绘制对象。每次你一个片段,你必须测试 ShapePass 图像上相同像素的颜色,看看附近的 8 个像素是否有不同的颜色。如果所有附近的像素都是相同的颜色,则该片段不代表边框,否则添加一些颜色来绘制边框。

方法 2: 还有其他技术可以在一次通过中为您提供类似的效果。您可以将同一对象绘制两次,第一次使用单一颜色稍微放大,然后使用真实颜色。