2013-05-10 124 views
1

OpenGL ES 2.0是在一個項目中實現的,我一直在使用一些着色器組件來定義一個紋理,該組件定義了位圖修改後的外觀。 SurfaceView中只有一個圖像用於我的項目。SurfaceView與OpenGL ES

雖然在過去24小時內使用了幾種不同的方法並查看代碼,但希望能夠從社區快速響應一兩個。不尋找解決方案,我會做這個研究。

這聽起來好像是因爲我們使用着色器,爲了在基於觸摸事件的紋理中進行縮放和移動,我將不得不使用Matrix實用程序和OpenGL翻譯或移動相機來獲取與ImageView中當前所做的效果相同。這是否是適當的方法?也許甚至修改着色器代碼,以便我有一些額外的輸入變量?

我不相信我可以在Android端使用任何可以獲得相同效果的東西,例如修改SurfaceView的畫布或以某種其他方式更改UI的尺寸以達到相同效果?

謝謝。再次,縮放和移動解決方案並不是必要的,只是試圖掌握混合OpenGL和Android適當的任務。

爲什麼看起來1.0中的幾個元素比2.0更容易;發佈之間的易用性應該會提高。

回答

1

是的。您將需要使用正投影並調整範圍以進行縮放。請參閱this鏈接。要平移,您可以簡單地使用glTranslatef。

如果您希望完全在像素着色器中完成此操作,則可以將紋理矩陣堆棧與glScalef和glTranslatef一起使用。

+0

但是這些功能不是隻有OpenGL 1.0/1.1纔可用嗎?試圖確保我在2.0中混合使用時不會錯過任何東西。 – 2013-05-10 18:02:57

+0

我假設對於這個特定的任務,我將不得不引用諸如Matrix.translateM()和Matrix.scaleM()等函數。我打算使用這種方法,謝謝。 – 2013-05-10 18:21:28

+1

對不起,這些不適用於2.0,但您指向的功能是。爲了回答你爲什麼2.0看起來更難的問題,爲了簡化驅動程序開發並使其與DirectX保持一致,做出了某些決定。在着色器中允許隱式的GL狀態訪問並不容易。 – Ani 2013-05-10 19:06:48