Whi*_*aws 2 c++ textures opengl-es texture-mapping mipmaps
我有这个网格,基本上是从地图集中采样其纹理。当纹理被放大时,它会按预期工作。

然而,每当我从远处看它时,我开始看到纹理上的线条和蓝色色调,就好像它们在闪闪发光......

这是用于指定图像属性的代码:
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);
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
这里可能有什么问题,我完全被难住了......
我建议将 mipmap 层限制为 4,因为图块的大小为 16x16。请参阅Mipmap 范围和glTexParameter:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 4);
Run Code Online (Sandbox Code Playgroud)
如果不指定最大 mipmap 级别,则纹理大小不超过 1x1 的所有 mipmap 级别都将用于纹理采样。在第 4 级以上,纹理图集的图块会混合。