OpenGL 纹理缩小伪像
OpenGL texture minification artifacts
我有这个网格,它基本上是从图集中对其纹理进行采样。当纹理被放大时,它会按预期工作。
然而,每当我从远处看它时,我开始看到纹理上的线条和 blue-ish 色调,就好像它们在闪闪发光......
这是用于指定图像属性的代码:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
我实际上是在加载带有配置文件的纹理图集,如下所示:
count 5
name grass_top
uv 0.750 0.750 0.81250 0.81250
name grass_side
uv 0.18750 0 0.250 0.06250
name grass_bottom
uv 0.1250 0 0.18750 0.06250
name dirt
uv 0.1250 0 0.18750 0.06250
name stone
uv 0.0625 0 0.125 0.0625A
这里可能是什么问题,我完全被难住了...
编辑:实施 Rabbid76 的解决方案后,它是这样的!
我建议将 mipmap 层限制为 4,因为图块的大小为 16x16。见 Mipmap range and glTexParameter
:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);
如果不指定最大 mipmap 级别,则纹理大小不超过 1x1 的所有 mipmap 级别都将用于纹理采样。高于 4 级时,纹理图集的图块会混合。
我有这个网格,它基本上是从图集中对其纹理进行采样。当纹理被放大时,它会按预期工作。
然而,每当我从远处看它时,我开始看到纹理上的线条和 blue-ish 色调,就好像它们在闪闪发光......
这是用于指定图像属性的代码:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
我实际上是在加载带有配置文件的纹理图集,如下所示:
count 5
name grass_top
uv 0.750 0.750 0.81250 0.81250
name grass_side
uv 0.18750 0 0.250 0.06250
name grass_bottom
uv 0.1250 0 0.18750 0.06250
name dirt
uv 0.1250 0 0.18750 0.06250
name stone
uv 0.0625 0 0.125 0.0625A
这里可能是什么问题,我完全被难住了...
编辑:实施 Rabbid76 的解决方案后,它是这样的!
我建议将 mipmap 层限制为 4,因为图块的大小为 16x16。见 Mipmap range and glTexParameter
:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);
如果不指定最大 mipmap 级别,则纹理大小不超过 1x1 的所有 mipmap 级别都将用于纹理采样。高于 4 级时,纹理图集的图块会混合。