【发布时间】:2020-12-12 03:55:00
【问题描述】:
我使用简单的 GLSL 着色器制作了一个网格,将 纹理坐标 传递给 片段 着色器。它被应用到一个大型平面上。
片段着色器:
#version 330 core
out vec4 fragColor;
smooth in vec2 f_TexCoord;
vec4 gridColor;
void main()
{
if(fract(f_TexCoord.x / 0.0005f) < 0.025f || fract(f_TexCoord.y / 0.0005f) < 0.025f)
gridColor = vec4(0.75, 0.75, 0.75, 1.0);
else
gridColor = vec4(0);
// Check for alpha transparency
if(gridColor.a != 1)
discard;
fragColor = gridColor;
}
如您所见,线条并不平滑,它们开始在地平线处“闪烁”。 是否可以对其应用某种过滤/抗锯齿?我尝试增加样本数量(最多 4 个,因为更高的值会给我一个 qt 错误),但它对着色器没有影响。
【问题讨论】:
-
也许这篇关于filtering procedural textures的文章对你有帮助。
-
我使用过类似的需要绘制网格线的应用程序。我最终在一次绘制调用中使用了几何线条。这是非常有效和准确的。
标签: opengl glsl shader fragment-shader pyopengl