opengl - 是否可以使用自定义 mipmap 大小?

标签 opengl mipmaps

我目前正在研究某种虚拟纹理实现。 mipmap 级别用作细节级别控制结构。 (虚拟纹理中的每个纹素都与“真实”纹理中的数据 block 相关。)

数据存在于多个细节级别,这导致虚拟纹理中的 block 计数不同。

示例:

level       size of data       number of blocks
0           60                 4
1           30                 2
2           15                 1

我的想法是为虚拟纹理中的每个细节级别调用 glTexImage 以创建不同的 mipmap 级别。

问题是,尽管创建或更新/加载时没有错误,但我无法从纹理中获取任何数据。仅创建基本级别并调用 glGenerateMipmap 工作正常,但会导致某些基本尺寸的尺寸错误。 (从技术上讲,它们是正确的,但在我的情况下不是)

我在某处读到,mipmap 级别大小必须除以二(或除以二和下限)。

问题:

  • 是否可以加载“自定义”mipmap 级别?
  • mipmap 级别大小是否有任何限制?

最佳答案

您可以加载自定义 mipmap 级别,但无法选择其大小。 OpenGL 指定了它期望的级别的 MipMap 大小,并且不允许偏离它。

以宽度为例,mipmap 级别 i 所需的宽度为 max(1, Floor(w_b/2^i)),其中 w_b 为第一个 MIP 级别(基础)。其他尺寸也是如此(GL 规范 2.1,第 3.8.8 节,mipmapping 段落)。

关于opengl - 是否可以使用自定义 mipmap 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3906121/

相关文章:

python - 带有 Snow Leopard 的 Python 中的 OpenGL?

android - 此文件夹配置 ('v26' )是不必要的; 'minSdkVersion'是26,把这个文件夹下的所有资源合并到 'mipmap-anydpi'

android - glGenerateMipmap IMGSRV 错误

c++ - glGenerateMipmap 中的 GL_INVALID_OPERATION(不完整的立方体贴图)

java - 是否可以通过 id 获取 mipmap 图像?

c++ - gluLookAt() 是否对最小参数大小有限制?

opengl - 从 OpenGL 3.0 切换到 OpenGL ES 2.0 有什么大不了的吗?

使用 gluLookAt() 的 OpenGL FPS 相机

android - 无法使用android :icon ="@mipmap/ic_launcher" in Manifest after play services 7. 5.0

OpenGL:将鼠标点击投影到几何体上