使用OpenGL ES绘制轮廓线

4

我找到或尝试过的每一种在OpenGL中渲染轮廓的技术都使用了一些OpenGL ES不支持的函数...

实际上我能做的是将depthMask设置为false,以三像素宽的线框绘制对象,重新启用depthMask,然后绘制我的对象。但这对我没有作用,因为它只突出显示对象的外部部分,而不是内部。

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

enter image description here

所以,有人能指导我一种在OpenGL ES可用的技术吗?

1个回答

4

我有一段时间没有做过这样的事情了,但我认为你已经接近成功了!我的建议是:

  • 保持深度遮罩启用,但将背面剔除翻转只渲染物体的“内部”。
  • 使用推动所有顶点沿其法线稍微向外推的着色器来绘制网格,并以纯色(可能是黑色)呈现轮廓。确保绘制实心三角形而不仅仅是GL_LINES。
  • 将背面剔除恢复正常,然后再次以通常的方式重新渲染网格。

结果是,轮廓只会出现在网格上的三角形开始朝摄像机转移的点周围。这为您提供了一些漂亮,简单的轮廓,如鼻子,下巴,嘴唇和其他内部细节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接