我已加载纹理,并将其显示在多维数据集和平面上。在平面和立方体相交的点处,存在一些丑陋的视觉伪影。
以下两张图片展示了这个问题:
图1 - 这是什么:
图片2 - 相同的场景,其他观点:
以下是我加载图片的方式:
static const GLenum gl_format[4] = { GL_LUMINANCE, GL_LUMINANCE_ALPHA, GL_BGR, GL_BGRA };
GLuint LoadTGATexture(const char* filename)
{
//image is already loaded in --- unsigned char[] data - int width - int height - int components
unsigned int handle;
glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy);
glGenTextures(1, &handle);
glBindTexture(GL_TEXTURE_2D, handle);
glTexImage2D(GL_TEXTURE_2D, 0, components, width, height, 0, gl_format[components - 1], GL_UNSIGNED_BYTE, data);
gluBuild2DMipmaps(GL_TEXTURE_2D, components, width, height, gl_format[components - 1], GL_UNSIGNED_BYTE, data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy);
glBindTexture(GL_TEXTURE_2D, 0);
delete [] data;
return handle;
}
但我怎样才能解决它,我的错误是什么?
答案 0 :(得分:3)
我猜它与你的纹理无关。
从外观来看,你有剪裁问题。我会验证glEnable(GL_DEPTHTEST)
,确保在设置透视矩阵时你的近平面是>0.0
,意味着不是0.0而不是负数。还要确保您的远程飞机不是一些非常庞大的数字。我通常在1000.0停留,效果很好。你可能想做一些更小的事情。