我想绘制大量的四边形,每个四边形代表曲线的一小段,这样曲线看起来很平滑,但实际上只是由线性部分组成。我还希望能够设置线条的粗细和线条混合部分的粗细,这样在混合区域中,线条会线性地失去其 alpha 分量。理想情况下,这些线能够在 3D 场景中以任何方式定向,尽管它们通常位于面向相机的平面中。
问题在于,很难将线条与背景融合在一起,而不会使重叠的线段彼此相互作用,在许多重叠的地方变得更亮。我只希望线条的 1 个片段与背景混合,但如果单独渲染每个四边形,则很难知道哪个片段是正确的。
有没有一种有效的方法来做这样的事情?或者我是否必须进行某种预处理以将线变成 1 个网格而不是将其渲染为一堆四边形?
[这是线条相互交叉且未正确混合的问题图片]
http://i.imgur.com/8cYm1zK.png
这是一个相关的问题,但它是不同的,因为我想混合四边形,使它们线性下降。如果您从该线程实现解决方案,则混合看起来不正确。
OpenGL blending function to elminate primitive overlap but maintain overall opacity
最佳答案
看起来您正在将线条渲染为简单的重叠矩形,如下所示:
为了获得完美的结果,您需要像这样渲染角帽,没有任何重叠:
想想你将如何构建那些橙色点。你可以用三角扇来近似圆帽。您还可以根据自己的喜好制作尖角或平角。
回应@GuyRT 的回答:GL_MAX
混合模式看起来像这样:
关于c++ - 在 OpenGL 中渲染混合线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483198/