我知道有几种技术可以实现这个效果,但似乎都不够完美。
使用Sobel/Laplace滤波器不能找到所有正确的边缘(并会找到不需要的边缘),速度较慢且无法控制轮廓线的宽度。
目前我采用的方法是先用实心颜色渲染对象的背面,并比实际对象略大。结果看起来不错,但我真的希望我的轮廓线有恒定的宽度。
我已经尝试使用粗线框渲染对象的背面。这样可以得到恒定的轮廓线宽度,但由于线宽被弃用,会产生渲染问题并留下间隙,如果轮廓线突然改变方向(如在立方体上)。因为该技术存在其他问题,我还没有尝试使用第三次渲染通过为每个顶点绘制线框大小的点。
有任何想法吗?
编辑 我甚至尝试了使用几何着色器自行查找边缘,如http://prideout.net/blog/?p=54中所述,但它也会出现线框技术中的间隙问题。
编辑 通过在绘制轮廓线时禁用GL_DEPTH_TEST
,我已经成功消除了线框技术中的渲染伪影。不幸的是,重叠对象上的轮廓线也被消除了...
我的目标是获得类似于《龙之巢穴3》游戏中人物使用的效果。有人知道他们是如何做到的吗?