问题描述
当世界尺寸较小时,纹理渲染很好,没有任何纹理错误,但当它增加到一定程度时,就会出现纹理错误。尝试了几种纹理映射技术,但都没有帮助(或者可能是我做错了) 这个问题与阴影痤疮相似,但它不是阴影痤疮(我确定),因为我还没有实现任何阴影映射。
不知道如何解决这个问题,任何帮助将不胜感激(或我做错了什么)。
(附上shader代码供参考)
out vec4 FragColor;
in vec2 ChunkTexCoords;
uniform sampler2D sampler;
void main() {
FragColor = texture(sampler,ChunkTexCoords);
if(FragColor.a == 0) discard;
}
纹理参数
glTexParameteri(
GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE
);
glTexParameteri(
GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_TEXTURE_MIN_FILTER,GL_NEAREST
);
glTexParameteri(
GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST
);
解决方法
您的纹理缩小过滤器是最近邻框采样。一旦采样频率低于纹理中最高空间频率的一半(所谓的奈奎斯特频率),您就会得到采样混叠伪影。
解决方案:创建完整的一组经过适当低通过滤的 mipmap 级别。