2012-11-29 37 views
0

我很難理解OpenGL中紋理和圖像之間的關係。我知道當iPhone上的GPU渲染紋理時,它們是固有的開銷,這正是您創建CCSpriteBatchNode(cocos2d)以及紋理貼圖以減少這種開銷的原因。但是GPU如何繪製不同的圖像,如岩石,敵人,甚至是船隻,甚至是使用相同紋理的巨大怪物?我讀過紋理應該是OpenGL緩衝區,用於存儲圖像的顏色元素值,但正如我所說,可能有許多不同類型的對象具有不同的顏色值,所以如何使用相同的紋理繪製它們?OpenGL ES 2.0的紋理和圖像之間的關係

我完全喪失了區分紋理和真實圖像的可能性,我們可以在Illustrator上對其進行說明,然後使用紋理圖集將其複製到我們的項目中。另一個有趣的事情是,紋理的尺寸應該是2的權力,但圖像可以有任何尺寸!任何人都可以請指導我一個紋理是什麼,它與圖像有什麼不同?謝謝。

回答

1

關於使用CCSpriteBatchNode並使用一個紋理繪製不同的東西。您可以將多張圖片合併到一張紋理圖集中。對於一個文件將創建一個紋理,它將包含所有的圖像,並且所有的精靈(如你所說,岩石,敵人等)將簡單地使用不同的紋理座標來繪製紋理的一部分,而不是整體質地。

它不僅可用於減少繪製調用次數,還可以提高fps速率。它還可以幫助您節省應用程序內存並一次加載更多圖片。這是關於你的第二個問題。

是的。加載到內存紋理中的尺寸將是2的冪。因此,從圖像中,具有64x64實際尺寸的圖像將創建具有相同尺寸的紋理,但對於尺寸爲65x65的圖片將創建尺寸爲128x128的紋理。它會增加內存使用量。當你紋理紋理圖集,你可以結合大小不同的許多圖片在一個大尺寸的紋理圖集,例如2048x2048。創建的紋理將具有相同的大小,並且它將包含所有圖像(幀),因此您可以將它與CCSpriteBatchNode一起使用以減少繪製調用次數。

+0

你說精靈將使用不同的紋理座標來繪製紋理的一部分的一部分是缺失的鏈接。現在這一切都有道理..!謝謝 –

+0

不用客氣=) – Morion