在OpenGL ES 2.0中禁用mipmapping

时间:2013-02-04 10:58:26

标签: opengl-es-2.0 mipmaps

我想在屏幕上绘制一些相同的图形(具有相同的纹理)(OpenGL ES 2.0)。这些数字在放大和缩小过滤器方面会有所不同。和不同的状态mipmapping。 问题是:如果我在绘制任何图形时使用mipmapping(如果我调用了glGenerateMipmap()函数),我就无法关闭mipmapping模式。 如果我至少调用一次glGenerateMipmap(),是否可以关闭mipmapping模式?

1 个答案:

答案 0 :(得分:2)

glGenerateMipmap仅生成较小的mipmap图像(基于顶级图像)。但是,如果您不使用正确的mipmapping过滤器模式(通过glTexParamteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_..._MIPMAP_...)),那些mipmap不会用于过滤。因此,如果您不希望过滤纹理mipmap,只需将GL_NEARESTGL_LINEAR设置为缩小过滤器,即可为此特定纹理禁用它。同样,调用glGenerateMipmap并不意味着没有进行mipmapping。仍然会使用可能的mipmapping过滤器模式(也是新创建的纹理的默认模式),只是mipmap图像包含垃圾(或者纹理实际上是不完整的,导致实现定义的行为,但通常是黑色纹理)

同样,在渲染之前不应该每帧调用glGenerateMipmap。设置纹理的基本图像后调用一次。就像它说它生成mipmap图像一样,它们在生成后不会消失。是否实际使用了mipmapping是纹理对象的过滤模式。