2011-01-27 47 views
2

我加載RGBA紋理其是1024×1024。我預期導通存儲器紋理大小將是1024×1024×4 => 4 MB。但是當我嘗試打印內存消耗時,我可以看到紋理花費了大約7-8 MB,幾乎翻了一番。我只是想知道是否iPad是從字節轉換每個通道半浮, 那麼,有什麼辦法可以指定每個像素應該採取4個字節,而不是8個字節。ipad公司的OpenGL ES:在存儲器紋理大小

+0

你確定你不小心加載(或填充出)一個2048×1024的質感? – bobobobo 2013-02-22 14:22:59

回答

-1

您必須指定內部格式當您使用glTexImage2D創建它的質感。

你的是可能設置爲GL_FLOAT什麼的。

查找的文檔在這裏:http://www.opengl.org/sdk/docs/man/xhtml/glTexImage2D.xml

+0

glTexImage2D的type參數指定要從中創建紋理數據的CPU數組的類型。它不會影響GPU上的數據,這僅取決於內部格式。 – 2011-10-18 19:59:14

+0

即使如此,GL_FLOAT寧可導致至少16 MB。 – 2011-10-18 20:09:33

0

最簡單的方法來指定它使用的是容量內部格式(如GL_RGBA8而不是GL_RGBA),雖然我不知道,如果這些在ES支持。但是,如果ES設備將存儲每個通道多於8位的標準RGBA紋理,我會感到驚訝。

如何確定的GPU內存消耗?我寧願猜測額外的內存是由於其他重要的GPU資源,如VBO,不要忘記幀緩衝本身(您呈現的內存),這需要一個合理的內存量。請記住,使用mip貼圖時,這些額外需要大約33%的基本紋理內存。

如果你正在談論你從創建紋理的CPU數據的大小,那麼這不會有任何與紋理的大小反正只取決於你自己的數據的大小。