我的OpenGL 2场景中有一块墙和一块砖纹,无论我设置什么,都会保持闪烁和闪烁。当我放大近距离(并且可以清楚地看到纹理)时,闪烁和闪烁停止。但当我缩小并在场景中移动时,闪烁和闪烁非常明显。这是砖墙的纹理代码:
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_WRAP_T, GL2.GL_REPEAT);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MAG_FILTER,GL2.GL_NEAREST);
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MIN_FILTER,GL2.GL_LINEAR);
gl.glGenerateMipmap(GL2.GL_TEXTURE_2D);
brickwall.enable(gl);
brickwall.bind(gl);
//...
brickwall.disable(gl);
从我用Google搜索的内容来看,这似乎是mipmapping解决的问题。但我的问题是,如何做到这一点?我是否必须为2个大小的图像的所有各种功能创建,加载和设置参数?任何人都可以给我一个使用mipmaps加载和显示JOGL2纹理的例子,它不会闪烁,闪烁变焦并在场景中移动吗?
答案 0 :(得分:2)
您正在使用glGenerateMipmap生成mipmap链,但您没有设置适当的MIN过滤器:
brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MIN_FILTER,GL2.GL_LINEAR_MIPMAP_LINEAR);
* MIPMAP *过滤器使用mipmap,其他纹理过滤器不使用。