我目前正在开发某种虚拟纹理实现.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级别,但无法选择其大小.OpenGL指定了MipMap大小所需的级别,并且不允许偏离它.
以宽度例如,对于水平的mipmap所需宽度i
时max(1, floor(w_b / 2^i))
,其中W_B是第一mip级别(基部)的宽度.其他尺寸也是如此(GL规范2.1,第3.8.8节,段落mipmapping).