我是OpenGL ES 2.0和Android的新手,我正在嘗試製作動態壁紙。我目前正在嘗試使用紋理圖集來創建動畫和更改紋理。我到處看看,this tutorial是我找到的最有用的東西。Android OpenGL ES 2.0紋理動畫
我明白如何加載紋理圖集,但是如何更改在onDrawFrame方法中渲染的紋理對象,以便它將是一個正方形在每一幀渲染下一個紋理?實際的代碼是什麼樣的?
我是OpenGL ES 2.0和Android的新手,我正在嘗試製作動態壁紙。我目前正在嘗試使用紋理圖集來創建動畫和更改紋理。我到處看看,this tutorial是我找到的最有用的東西。Android OpenGL ES 2.0紋理動畫
我明白如何加載紋理圖集,但是如何更改在onDrawFrame方法中渲染的紋理對象,以便它將是一個正方形在每一幀渲染下一個紋理?實際的代碼是什麼樣的?
使用你在該教程你可以代替填補了uvBuffer(texCoord)用隨機值緩衝,循環通過他們每一幀的。 因此,讓我們假設你從UV(0,0),UV(0.25,0),UV(0,0.25)和UV(0.25,0.25)開始。下一幀,您將uvBuffer中的值更改爲UV(0.25,0),UV(0.5,0),UV(0.25,0.25),UV(0.5,0.25)。等等。
解決方案1: 具有的所有可能的UV座標的查找陣列。然後使用一個int字段來增加每一幀的步長。將接下來的4個項目放在第二個數組中並替換緩衝區的內容。
解決方案2: 商店4 UV座標在用於x座標,一個用於Y-座標的陣列和一個浮子字段。 將x座標每幀增加0.25,y座標每4幀增加0.25(或者當x座標變爲0時)。 用由以下構造的uv座標替換緩衝區的內容:x,x + 0.25,Y,Y + 0.25
您可以通過清除它,把陣列和倒帶它重建enture緩衝器。或者,您可以使用putFloat(int pos,float value)來替換緩衝區中的現有條目。後者可能更加資源保守。
我有點想通了,但是這樣的代碼會是什麼樣子? –
您可以預先填充具有所有可能的UV座標的數組。然後你存儲一個int作爲索引,並逐步前進每一幀。或者你可以將每個uv-coord存儲爲一個浮點數並在每一幀中增加它們。許多可能性。實現取決於什麼最適合您的架構的其餘部分。 – reden
好的,所以在你的第一個例子中,你如何更新繪圖方法?它會改變座標數組,然後調用uvBuffer.put(coordinateArray)? –