2

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

4

1 回答 1

3

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

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

于 2013-03-18T15:58:04.010 回答