gpt4 book ai didi

c++ - 在 OpenGL 中渲染混合线

转载 作者:行者123 更新时间:2023-11-30 01:18:36 26 4
gpt4 key购买 nike

我想绘制大量的四边形,每个四边形代表曲线的一小段,这样曲线看起来很平滑,但实际上只是由线性部分组成。我还希望能够设置线条的粗细和线条混合部分的粗细,这样在混合区域中,线条会线性地失去其 alpha 分量。理想情况下,这些线能够在 3D 场景中以任何方式定向,尽管它们通常位于面向相机的平面中。

问题在于,很难将线条与背景融合在一起,而不会使重叠的线段彼此相互作用,在许多重叠的地方变得更亮。我只希望线条的 1 个片段与背景混合,但如果单独渲染每个四边形,则很难知道哪个片段是正确的。

有没有一种有效的方法来做这样的事情?或者我是否必须进行某种预处理以将线变成 1 个网格而不是将其渲染为一堆四边形?

[这是线条相互交叉且未正确混合的问题图片]

http://i.imgur.com/8cYm1zK.png

这是一个相关的问题,但它是不同的,因为我想混合四边形,使它们线性下降。如果您从该线程实现解决方案,则混合看起来不正确。

OpenGL blending function to elminate primitive overlap but maintain overall opacity

最佳答案

看起来您正在将线条渲染为简单的重叠矩形,如下所示:

lines as simple overlapping rectangles

为了获得完美的结果,您需要像这样渲染角帽,没有任何重叠:

rounded corner cap

想想你将如何构建那些橙色点。你可以用三角扇来近似圆帽。您还可以根据自己的喜好制作尖角或平角。

回应@GuyRT 的回答:GL_MAX 混合模式看起来像这样:

intersection of feathered lines in MAX blend mode

关于c++ - 在 OpenGL 中渲染混合线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com