我正在尝试用现代的Opengl绘制一个矩形,使用着色器来做填充和描边。我将填充颜色,笔划颜色和笔划宽度发送到片段着色器中的统一块(以及矩形位置和大小)。将笔划片段设置为笔触颜色并将填充片段设置为填充颜色的推荐方法是什么?
目前,我有两个想法浮现在我的脑海中。首先,if语句检查frag坐标是否在矩形或矩形笔触的边界内,并基于此设置frag颜色。这种方法会产生相当大的一个复杂的if语句,当需要旋转矩形时,情况可能会变得更糟。(另外,我已经了解到应该避免着色器中的分支)
我的第二个想法是使用带符号的距离函数来确定颜色,但我不熟悉使用这些函数,我有这样的想法,他们做锐角不太好。
我说得太离谱了吗?有没有更好的方法来做到这一点?
发布于 2016-11-14 21:10:05
如果要栅格化笔划,片段着色器听起来就像是一个为时已晚的阶段。片段着色器在光栅化处理已经被执行之后执行。如果我可以提出一个建议,我会考虑使用geometry shader来动态生成您的笔划的几何形状。虽然可以说,在VBO中增量地添加数据是最好的解决方案(因为大部分笔划不会随着时间的推移而改变)。如果绘图区域的分辨率没有更改,您还可以考虑将笔划渲染为纹理,然后对其进行修改。
发布于 2016-11-14 22:21:31
您需要2个绘制调用,一个用于填充矩形,另一个用于未填充矩形。你也可以使用这个库https://github.com/memononen/nanovg
https://stackoverflow.com/questions/40572091
复制相似问题