opengl JOGL mipmap和纹理闪烁

p8ekf7hl  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(194)

我的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纹理,它不会闪烁和闪烁,缩放和移动场景?

nnsrf1az

nnsrf1az1#

您正在使用glGenerateMipmap生成mipmap链,但您没有设置适当的MIN过滤器:

brickwall.setTexParameteri(gl, GL2.GL_TEXTURE_MIN_FILTER,GL2.GL_LINEAR_MIPMAP_LINEAR);

MIPMAP过滤器使用Mipmap,而其他纹理过滤器不使用。

相关问题