2011-09-24 64 views
0

我的平臺是iPhone - OpenGL ES 1.1如何修改OpenGL ES 1.1中的綁定紋理

我正在尋找有關修改或繪製到紋理的教程。 例如:

我有一個背景紋理:(只是空白的藍白色gradiant圖像)

和物體質地: enter image description here

我需要拉攏的對象背景多次這麼優化性能我想它繪製到背景紋理像這樣:

enter image description here

沒有人知道faste st的方式來做到這一點? 非常感謝!

回答

1

是否想將其繪製到背景紋理中,然後保留它,或覆蓋它,或者是什麼?我不完全確定這個問題。

要繪製到背景上然後再使用它,您需要創建另一個紋理或pbuffer/fbo,並將其綁定。用你的背景圖像繪製一個全屏四邊形,然後根據需要繪製其他四邊形。綁定紋理應該具有結果,根據需要進行合成,並且可以用作紋理或複製到文件中。這通常稱爲渲染到紋理,通常用於合併圖像或其他動態圖像效果。

要優化此處的性能,您需要重新使用包含最終結果的紋理。這會減少渲染的成本,無論它是什麼(1個背景+4個面孔)爲單個背景繪製。

編輯:This article似乎有一個相當不錯的OpenGL ES RTT細分。 this one也有一些很好的信息,但不是ES特定的。

要覆蓋貼花,您只需在背景上繪製它們即可。這與RTT中的繪圖方法相同,但沒有將紋理綁定爲渲染目標。這不會持久,它只存在於後緩衝器中,但會產生相同的效果。

要優化此方法,您需要儘可能批量繪製貼花。假設它們都具有相同的屬性和源紋理,這很容易。根據需要綁定所有紋理和設置屬性,用角落填充大量內存,然後繪製大量四邊形。你也可以在即時模式下單獨繪製它們,但是這樣會比較昂貴。

+0

是的,我想繪製到背景並保留(因爲它將來不會改變),它就像牆上的彈孔。我知道這是使用pBuffer o FBO,但我沒有找到任何有關該示例或教程的信息@@ –

+0

實際上可以通過幾種不同的方式來完成子彈孔,例如投影紋理和濺射,但是RTT就是您想要的。 – ssube