我正在使用lwjgl学习openGL。我试图看到不同滤镜对纹理的影响。加载纹理我使用SlickUtil.TextureLoader加载纹理,只有前2个纹理过滤器选项工作,其他纹理过滤器导致空白纹理。如果有人知道我做错了什么或如何在加载纹理后手动应用滤镜,请说出来;
Texture[] textures = new Texture[6];
textures[0] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_NEAREST);
textures[1] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_LINEAR);
textures[2] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_NEAREST_MIPMAP_NEAREST);
textures[3] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_LINEAR_MIPMAP_NEAREST);
textures[4] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_NEAREST_MIPMAP_LINEAR);
textures[5] = TextureLoader.getTexture("BMP", new FileInputStream("src/Textures/Glass.bmp"), GL_LINEAR_MIPMAP_LINEAR);
答案 0 :(得分:3)
* MIPMAP *过滤器需要一个完整的mipmap链,很明显纹理加载器没有创建mipmap链。 Mipmap可以从文件加载,也可以使用glGenerateMipmap()由OpenGL生成。
不完整的mipmap链和mipmap过滤器的常见症状是纹理看起来完全是白色(或黑色)。
对于LWJGL,您可以使用glGenerateMipmap(GL30,OpenGL 3.0)或glGenerateMipmapEXT(GL_EXT_framebuffer_object扩展名)。
要使用它,只需使用glBindTexture绑定纹理,并使用正确的纹理目标(与glBindTexture相同)调用glGenerateMipmap。