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

fho*_*fho 2 opengl mipmaps

我目前正在开发某种虚拟纹理实现.mipmap级别用作详细控制结构的级别.(虚拟纹理中的每个纹素都与"真实"纹理中的数据块相关.)

数据存在于几个细节级别中,这导致虚拟纹理中的块计数不同.

例:

level       size of data       number of blocks
0           60                 4
1           30                 2
2           15                 1
Run Code Online (Sandbox Code Playgroud)

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

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

我在某处读到mipmap级别大小必须除以2(或者2和floor).

问题:

  • 是否可以加载"自定义"mipmap级别?
  • 是否存在约束mipmap级别大小?

Bah*_*bar 5

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

以宽度例如,对于水平的mipmap所需宽度imax(1, floor(w_b / 2^i)),其中W_B是第一mip级别(基部)的宽度.其他尺寸也是如此(GL规范2.1,第3.8.8节,段落mipmapping).