我正在加载一个1024 x 1024的RGBA纹理。我预计内存中的纹理大小将是1024 x 1024 x 4 => 4 MB。但是当我尝试打印内存消耗时,我可以看到纹理大约需要7到8 MB,几乎翻倍。我只是想知道IPad是否正在将每个通道从字节转换为半浮点数, 那么有没有办法指定每个像素应该占用4个字节而不是8个字节。
答案 0 :(得分:0)
指定它的最简单方法是使用大小的内部格式(如GL_RGBA8而不是GL_RGBA),尽管我不确定ES是否支持这些格式。但是如果ES设备存储每个通道超过8位的标准RGBA纹理,我会感到惊讶。
如何确定GPU内存消耗?我宁愿猜测额外的内存是由于其他重要的GPU资源,比如VBO,而不是忘记了帧缓冲本身(你渲染的内存),它占用了大量的内存。请记住,当使用mip-maps时,这些还需要大约33%的基本纹理内存。
如果您正在讨论从中创建纹理的CPU数据的大小,那么这与纹理的大小无关,只取决于您自己数据的大小。
答案 1 :(得分:-1)
使用glTexImage2D创建纹理时,必须指定纹理的 类型 和 内部格式 。
你的可能设置为GL_FLOAT或其他东西。
在此处查看文档:{{3}}