2014-01-28 20 views
0

我正在做視頻紋理到創建的矩形表面。我需要創建另外兩個不同大小的矩形,然後複製第一個表面上運行的紋理視頻的一部分(例如:視頻的中間部分),並在創建的新表面上播放它。這可能使用OpenGL ES嗎?通過我的原生視頻表面渲染器,我可以執行此功能,並將其映射到OGLES應用程序。我只是想知道是否可以直接從OGL應用程序本身執行操作,通過從視頻紋理表面複製選定的矩形?從視頻紋理中選擇源矩形

回答

0

如果你的紋理是全動態視頻,你不應該複製紋理數據,因爲這樣太慢也跟不上視頻幀速率。您應該避免使用glTexImage2D(),轉而使用EGL圖像擴展在我的第三篇文章這裏詳細:

http://montgomery1.com/opengl/ 

但無論哪種方式,一旦你的圖像中的質地和紋理綁定glBindTexture() ,那麼您繪製的任何數量的矩形都將使用相同的當前綁定紋理進行紋理處理,而不需要更多複製。這些矩形實際上是由三角形構成的幾何體而不是「表面」。幀緩衝區是表面。每個矩形的紋理座標可以不同,這允許您爲每個矩形唯一地裁剪和/或縮放紋理映射。

+0

謝謝。通過指定紋理座標,我實際上可以裁剪紋理映射。當我想繪製一個矩形時,我必須定義4個頂點。然後我調用: glVertexPointer(2,GL_FLOAT,0,squareVertices); glColorPointer(4,GL_UNSIGNED_BYTE,0,squareColors); glDrawArrays(GL_TRIANGLE_STRIP,0,4);這將創建我的矩形。但是如何繪製兩個或多個單獨的矩形,只要調用一次glDrawArrays就不會相互接觸? 這可能嗎?當我將下一個頂點添加到數組並增加計數值 時,它不起作用。 – Hari

+0

您可以通過使用GL_TRIANGLE而不是GL_TRIANGLE_STRIP來完成,但是對glDrawArrays()進行另一次調用也沒有任何問題。爲了更快地使用VBO。 – ClayMontgomery

+0

謝謝你,謝謝你的鏈接。對於像我這樣的新手來說,它對於理解opengl和opengl擴展是非常有用的。 – Hari