嘿,我有一个加载了 glTextImage2D 的纹理。我想在加载到 VRAM 后获取纹理的大小,我需要做什么?我的内部格式是 RGBA,纹理的格式各不相同。
这可能对您有帮助,您可以从中推断出实际的内存使用情况。但是,我相信这仍然是一个近似值:
(使用 NVIDIA 或 ATI 特定扩展查询 OpenGL 的总内存使用量)
另请注意,根据我的经验,通过粗略计算近似内存使用量通常就足够了。纹理“应该”存储 1,2 或 4 个组件,而没有任何显着的开销。因此,对于 WxH RGBA 纹理,计算 W*H*4。如果存储浮动纹理(即 GL_RGBA32F),则计算 W*H*4*4。对于 Mip-Map,增加 (1/3) 额外的内存消耗。但是请注意,至少据我所知,纹理内存也可能会碎片化,估计可用内存会减少。