OpenGL:为什么方形纹理占用的内存较少

时间:2016-08-08 09:51:43

标签: opengl

问题: 如果存储在方形纹理中而不是长矩形纹理中,为什么相同数量的像素会显着减少视频内存?

示例: 我正在使用glTexImage2D命令创建360个4x16384大小的纹理。内部格式为GL_RGBA。 视频内存:1328 MB。

如果我使用相同的数据创建360个256x256纹理,则内存使用量小于100MB。

使用集成的Intel HD4000 GPU。

1 个答案:

答案 0 :(得分:7)

不是纹理是矩形的。关于其中一个维度非常

为了以最佳方式从纹理中选择纹素,硬件将采用所谓的混合。一般的想法是它将重构纹理中的字节,以便在2维中彼此相邻的像素也将是存储器中的邻居。但这样做需要纹理在两个维度上都具有一定的最小尺寸。

现在,纹理过滤硬件可以忽略这个最小尺寸,只能从纹理的实际尺寸中的像素中获取。但是额外的存储仍然存在,占用空间没有用处。

鉴于您所看到的内容,英特尔的混合硬件很可能具有32或64像素的基本最小尺寸。

在OpenGL中,除了你在这里所做的事情之外,你无法发现这种不协调现象。