我知道正常的變換矩陣是模型/視圖/投影矩陣的轉置的倒數,但它看起來像「inverse
」僅在GLSL 1.4中添加,並且我找不到「transpose
」。我是否需要將一堆數學複製並粘貼到我的GLSL中? (如果是這樣,是否有一個很好的權威的開源地址我可以複製?)給定模型/視圖/投影轉換矩陣,如何在不使用GLSL 1.2中的不推薦使用的特性的情況下計算正常矩陣?
要清楚,我問的是「如何計算gl_NormalMatrix
而不使用不推薦使用的API」?
我知道正常的變換矩陣是模型/視圖/投影矩陣的轉置的倒數,但它看起來像「inverse
」僅在GLSL 1.4中添加,並且我找不到「transpose
」。我是否需要將一堆數學複製並粘貼到我的GLSL中? (如果是這樣,是否有一個很好的權威的開源地址我可以複製?)給定模型/視圖/投影轉換矩陣,如何在不使用GLSL 1.2中的不推薦使用的特性的情況下計算正常矩陣?
要清楚,我問的是「如何計算gl_NormalMatrix
而不使用不推薦使用的API」?
這通常是通過計算模型視圖矩陣
N = (M^-1)^T
在CPU上的倒數的轉置,然後上傳矩陣就像載任何其它基質進行處理。
是的,這是我最終做的。具體來說,我最終在Python中使用NumPy來完成它,在這裏它是'轉置(M [:3,:3])。',但我懷疑在C中有點痛苦。 – Glyph 2013-02-12 02:49:31
BTW,還有一大堆點的不是避免「不推薦使用的API「,如果您僅限於GL 2.1。 – 2013-02-11 02:08:41
如果你堅持在覈心配置文件上工作的東西,將OpenGL和OpenGL ES的新版本轉發端口不是更容易嗎? – Glyph 2013-02-12 02:44:59