在OpenGL中使用Mipmapping进行错误的纹理处理

时间:2017-05-26 10:13:51

标签: c++ opengl mipmaps

如果我使用这种映射

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

我的纹理工作正常,但我想摆脱像这样的像素闪光效果

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGBA, width, height, GL_RGB, GL_UNSIGNED_BYTE, data);

我看到的是: enter image description here

我尝试使用.jpg和.bmp的不同尺寸(1024x1024,512x512,256x256,128x128,64x64),效果总是这样。

1 个答案:

答案 0 :(得分:3)

假设您的第一个版本没有mipmaps,并且您在两个版本中使用相同的输入数据:gluBuild2DMipmaps的格式参数错误。看来你有RGBA数据,但告诉OpenGL它是RGB。