问题: 如果存储在方形纹理中而不是长矩形纹理,为什么相同数量的像素会显着减少视频内存?
示例: 我使用glTexImage2D命令创建360个4x16384大小的纹理.内部格式为GL_RGBA.视频内存:1328 MB.
如果我使用相同的数据创建360 256x256纹理,则内存使用量小于100MB.
使用集成的Intel HD4000 GPU.
这不是纹理是矩形的.这是一个非常小的维度.
为了以最佳方式从纹理中选择纹素,硬件将采用所谓的混合.一般的想法是它将重构纹理中的字节,以便在2维中彼此相邻的像素也将是存储器中的邻居.但这样做需要纹理在两个维度上具有一定的最小尺寸.
现在,纹理过滤硬件可以忽略这个最小尺寸,只能从纹理实际尺寸内的像素中获取.但是额外的存储仍然存在,占用空间没有用处.
鉴于您所看到的,英特尔的混合硬件很可能具有32或64像素的基本最小尺寸.
在OpenGL中,除了你在这里所做的之外,没有什么可以检测到这种不协调.