2013-05-19 192 views
0

我有一個2x4矩陣。代表一個正方形的4個點。我需要以旋轉點/錨點爲正方形的中心將x方向的弧度(顯然可以轉換爲度數)旋轉。OpenGL ES 2.0中的旋轉

由於OpenGL ES 2.0的已經移除了變換函數(glPush/glPop,glRotate,glTranslate,glScale等)我需要做旋轉自己。有人可以幫我寫一個函數來預旋轉嗎?

回答

0

輪作在2D可表示爲(其中theta是弧度):

cs = cos(theta); 
sn = sin(theta); 

out.x = in.x * cs - in.y * sn; 
out.y = in.x * sn + in.y * cs; 

上述線性方程可以表示爲2×2矩陣(在美國的方式,佈置成列):

| cs sn | 
| -sn cs | 

該基質可以被擴展爲也添加翻譯:

| cs sn tx | 
| -sn cs ty | 
| 0 0 1 | 

在OpengGLES 2.0中,您可能會將這4個點作爲一個由兩個組件組成的數組打包,您將需要在頂點着色器中轉換它們。你計算上面的矩陣,並使用統一的方式將它發送到管道中。

這可以變得很長,如果你不知道OpenGL ES 2.0的管道。你需要更多信息嗎?

+0

哈哈,是的,我有一個非常基本的瞭解實際的東西,一般在OpenGL引擎蓋下去。據我瞭解,OpenGL ES管道更瘋狂。我甚至沒有使用自定義着色器BTW,所以如果我可以做到這一點,而不使用GLSL,我會是一個非常快樂的露營者。 – ManOx

+0

在OpenGL ES 2.0中沒有固定的流水線,您需要使用GLSL。我爲你找到了這個:http://www.khronos.org/assets/uploads/books/openglr_es_20_programming_guide_sample.pdf這是一個簡單的開始,你需要改變頂點着色器來添加仿射變換,但這相對容易。 – Trax

+0

所以沒有着色器中的自定義代碼沒有辦法做旋轉? – ManOx