0
我有一個2x4矩陣。代表一個正方形的4個點。我需要以旋轉點/錨點爲正方形的中心將x方向的弧度(顯然可以轉換爲度數)旋轉。OpenGL ES 2.0中的旋轉
由於OpenGL ES 2.0的已經移除了變換函數(glPush/glPop,glRotate,glTranslate,glScale等)我需要做旋轉自己。有人可以幫我寫一個函數來預旋轉嗎?
我有一個2x4矩陣。代表一個正方形的4個點。我需要以旋轉點/錨點爲正方形的中心將x方向的弧度(顯然可以轉換爲度數)旋轉。OpenGL ES 2.0中的旋轉
由於OpenGL ES 2.0的已經移除了變換函數(glPush/glPop,glRotate,glTranslate,glScale等)我需要做旋轉自己。有人可以幫我寫一個函數來預旋轉嗎?
輪作在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的管道。你需要更多信息嗎?
哈哈,是的,我有一個非常基本的瞭解實際的東西,一般在OpenGL引擎蓋下去。據我瞭解,OpenGL ES管道更瘋狂。我甚至沒有使用自定義着色器BTW,所以如果我可以做到這一點,而不使用GLSL,我會是一個非常快樂的露營者。 – ManOx
在OpenGL ES 2.0中沒有固定的流水線,您需要使用GLSL。我爲你找到了這個:http://www.khronos.org/assets/uploads/books/openglr_es_20_programming_guide_sample.pdf這是一個簡單的開始,你需要改變頂點着色器來添加仿射變換,但這相對容易。 – Trax
所以沒有着色器中的自定義代碼沒有辦法做旋轉? – ManOx