我想了解如何使用OpenTK在2D應用程序中使用OpenGL,並且已經閱讀使用內置調用glMatrixMode並不現代。我想在我的着色器輸入中使用左上角的原點和像素座標,並假定我可以定義一個矩陣來做這些翻譯。OpenTK - 左上角原點和像素座標
我正在嘗試使用我自己的矩陣使用OpenTK矩陣類來做到這一點。不過,我想我已經在建立投影矩陣犯了一個錯誤,並希望確認我應該做的事情: -
TranslationMatrix = Matrix4.Identity * Matrix4.CreateScale(1, -1, 1);
TranslationMatrix = TranslationMatrix * Matrix4.CreateOrthographicOffCenter(0, bounds.Width, 0, bounds.Height, -1, 1);
var TranslatedPoint = TranslationMatrix * new Vector4(new Vector3(1024, 768, 0), 1); // bounds = {0, 0, 1024, 768 }
這導致x.Xyz == { 2, -2, 0 }
。我認爲頂點着色器中gl_position中使用的x和y座標應該在-1到1範圍內。
我想我在某處有一個重大的誤解,我應該看什麼?
w組件有哪些值?在均勻化(除以w)之後,每個軸上[-1,1]的假設是唯一的。 – BDL
乘以w後是-1791。在乘法之前,位置矢量用w初始化爲1。 – chris