我的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);
从我在谷歌上搜索的结果来看,这似乎是mipmapping解决的问题。但我的问题是,如何做到这一点?我必须为所有2的幂次大小的图像创建、加载和设置参数吗?谁能给予我一个例子,使用mipmap加载和显示一个JOGL2纹理,它不会闪烁和闪烁,缩放和移动场景?
1条答案
按热度按时间nnsrf1az1#
您正在使用glGenerateMipmap生成mipmap链,但您没有设置适当的MIN过滤器:
MIPMAP过滤器使用Mipmap,而其他纹理过滤器不使用。