2012-10-13 59 views
4

我有一個Android 4.0應用程序,它使用GL_OES_EGL_image_external渲染視頻作爲OpenGL表面的方法。這很好。另外,我想在其上擴展/變形一些補丁。目前,我正在爲那些區域頂部的某些四邊形添加一些着色器來遮擋那些我想要彎曲的區域。我被困在如何獲得基礎顏色。視頻四方形頂部的四邊形上的着色器如何扭曲底層圖像?可能嗎?使用OpenGL ES 2.0可以扭曲底層圖像嗎?

回答

3

我在iOS上,但我的應用程序做了非常類似的事情。

我如何實現它取決於sample code from Apple(特別是看RippleModel.m)。它的工作原理是它將視頻紋理視頻放置在四邊形上,但放置在高度細分的網格上,因此您可以獲得大量具有大量紋理座標的三角形。它以編程方式創建此網格的頂點 - 更重要的是,它還以編程方式創建紋理座標 - 並將它們保存在數組中。

對於每一幀,它遍歷所有的頂點並更新每個頂點的紋理座標,根據用戶觸摸的位置以紋理模式「翹曲」它們,並根據周圍頂點具有多少紋理偏移。因此,幾何體完全不會改變,並且它們不會在着色器中執行扭曲,它們都是在紋理座標中完成的;着色器然後只是在接收到的座標上進行直紋理查找。所以很難說這種方法是否適合您的需求,但是如果您的經紗只發生在2D中,並且您可以弄清楚如何將經紗定義爲紋理座標調整,這可能會有所幫助。