我目前正致力于某种虚拟纹理实现。 mipmap级别用作详细控制结构的级别。 (虚拟纹理中的每个纹素都与“真实”纹理中的数据块相关。)
数据存在于几个细节级别,导致虚拟纹理中的块计数不同。
示例:
level size of data number of blocks
0 60 4
1 30 2
2 15 1
我的想法是为虚拟纹理中的每个细节级别调用glTexImage来创建不同的mipmap级别。
问题是,在创建或更新/加载时没有错误我无法从纹理中获取任何数据。仅创建基本级别并调用glGenerateMipmap可以正常工作,但会导致某些基本大小的大小错误。 (从技术上讲,它们是正确的,但不是我的情况)
我在某地读到mipmap级别大小必须除以2(或者2和floor)。
问题:
答案 0 :(得分:5)
您可以加载自定义mipmap级别,但无法选择其大小。 OpenGL指定了MipMap大小所需的级别,并且不允许偏离它。
以宽度为例,mipmap级别i
所需的宽度为max(1, floor(w_b / 2^i))
,其中w_b是第一个mip级别(基础)的宽度。其他维度也是如此(GL规范2.1,第3.8.8节,段落mipmapping)。
答案 1 :(得分:0)
确保将mipmap级别一直下载到1x1。请参阅here。