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