使用OpenGL ES绘制轮廓

时间:2011-10-19 21:29:56

标签: opengl-es webgl

我发现或试图在OpenGL中渲染轮廓的每种技术都使用了一些在OpenGL ES上无法实现的功能......

实际上我可以做的是将depthMask设置为false,将对象绘制为3像素宽的线框,重新启用depthMask然后绘制我的对象。它对我不起作用,因为它只勾勒出我对象的外部部分,而不是内部。

下图显示了两个轮廓,左边是正确轮廓,右边是我得到的轮廓。

enter image description here

那么,有人可以指导我使用OpenGL ES无法实现的技术吗?

1 个答案:

答案 0 :(得分:4)

暂时没有完成其中一项,但我认为你几乎就在那里!我建议的是:

  • 启用depthMask,但翻转背面剔除只渲染对象的“内部”。
  • 使用该着色器绘制网格,该着色器将所有顶点略微推向它们的法线并作为纯色(您的轮廓颜色,可能是黑色)。确保您绘制实心三角形而不仅仅是GL_LINES。
  • 再次翻转背面剔除恢复正常并像往常一样重新渲染网格。

结果是,只有在三角形开始远离相机的网格上的点周围才能看到轮廓。这为你提供了一些漂亮,简单的轮廓,包括鼻子,下巴,嘴唇和其他内部细节。