opengl-es-2.0 - 在 OpenGL ES 2.0 中禁用 mipmap

标签 opengl-es-2.0 mipmaps

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

最佳答案

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 的是纹理对象的过滤模式。

关于opengl-es-2.0 - 在 OpenGL ES 2.0 中禁用 mipmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14685260/

相关文章:

opengl - OpenGL Mipmapping:OpenGL如何确定 map 级别?

ios - GLKit 不绘制 GL_POINTS 或 GL_LINES

ios - OpenGL ES 2.0 - GL_POINTS 和模板缓冲区

android - 编写用于 OpenGL 索引顶点缓冲区对象的 Wavefront OBJ 解析器

android - glGenerateMipmap IMGSRV 错误

opengl - 将自己的mipmap创建算法用于OpenGL纹理是否有意义?

iOS GL ES 2 应用程序在设备上崩溃但在模拟器上不崩溃

webgl - getShaderPrecisionFormat 返回值

java - 带有绘制为黑色方 block 的 mipmapping 的 LibGDX 字体

ios - iOS glGenerateMipmap 是同步的,还是可能是异步的?