QT利用opengl 進行視頻裁剪、拼接,4宮格,9宮格

一、概述

1.1 前言

在上一篇文章我們講了Y420P視頻數據如何裁剪、拼接、旋轉等,但是缺點也很明顯,一是工作量大,代碼量較大。二是容錯率低,因爲涉及到大量的浮點型計算,導致在數據拷貝的時候存在誤差,可能渲染的時候Y、UV分量就產生問題,視頻花屏、變形等。同時,YUV數據拷貝和計算的過程都是交給CPU進行,效率較低。

而這篇文章我們採取另外一種更優方式,利用 opengl 頂點和紋理座標做文章,變換座標確定視頻塊播放位置,代碼量更少、容錯率極高,易理解。

1.2 概念講解

1.2.1 頂點數組與頂點座標

頂點數組是OpenGL 1.1所提供的功能,在繪製各種圖形時指定了數據渲染的座標,表示了一個幾何圖形。爲了避免跑偏,我們不過多的解釋opengl相關知識。我們只需要知道我們在文章中是怎麼使用頂點數組以達到我們的目的。簡單說,頂點數組就是定義一個包含一系列座標點的數組,opengl其實就是基於頂點的網格繪製,幾何圖形就是將這些頂點按照一定規則連接起來,那麼紋理座標的4個座標點,映射到頂點上,openGL就會把這個紋理應用到4個頂點構成的圖形上。

頂點座標與紋理座標和其對應關係

如上圖所示,圖1稱爲頂點座標,圖2稱爲紋理座標,opengl爲了顯卡計算方便, 要求需要對座標進行歸一化處理,因此 頂點座標的 x,y 區間範圍是【-1,1】。

1.2.1 紋理數組與紋理座標

首先第一點,紋理座標的區間範圍是【0,1】,分別對應頂點座標的4個點。第二點,
考慮到電腦屏幕的座標,左上角爲(0,0),X軸向右爲正向,Y軸向下爲正向,和紋理座標是上下顛倒的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章