我正在尝试用现代Opengl绘制矩形,使用着色器进行填充和描边。我将填充颜色,笔触颜色和笔触宽度发送到片段着色器中的统一块(以及矩形位置和大小)。将笔画片段设置为笔触颜色并将填充片段填充到填充颜色的建议方法是什么?GLSL中的2D矩形笔画
目前,我有两个想法在我脑海中浮动。首先,if语句检查碎片坐标是否位于矩形或矩形区域的边界内,并根据该区域设置碎片颜色。这种方法会产生相当大的一个复杂的if语句,当它旋转矩形时,它可能会变得更糟。 (另外,我读过应该避免在着色器中分支)
我的第二个想法是使用带符号的距离函数来确定颜色,但我不熟悉使用这些,我有这个想法他们不太擅长做尖角。
我在这里脱颖而出吗?有没有更好的方法来做到这一点?
通过填充和未填充,你是指一个绘图调用笔画几何和一个绘制调用剩余的填充几何?另外,是的,我现在正在使用nanovg,但我正试图建立自己的图书馆以摆脱它。 – user1435899
是的,一个用于中风,一个用于填充。 建立你自己的图书馆是毫无意义的,你会得到很多的错误和非便携式解决方案。麻省理工学院的许可证非常灵活,您可以轻松改进nanovg用于特殊用途。此外,nanovg可以轻松移植到DirectX,Vulkan和其他图形API – quazeeee