opengl中將三維座標轉換到螢幕座標

2021-07-26 21:31:39 字數 525 閱讀 7736

opengl的通過四個變換,得到的結果就是螢幕上的畫素座標。

前三個變換(model, view, projection)都是4x4矩陣,操作物件是四維向量,所以需要把(x,y,z)補上w分量,變成(x,y,z,1)。

然後把前三個變換的矩陣依次左乘到這個向量上,得到的四維向量做齊次除法(所有分量都除以w分量),

然後用其中x和y分量再進行第四個變換(viewport),就得到螢幕座標。

(x,y,z,w) = projectmatrix*modelviewmatrix * (x,y,z,1)

x = x/w

y = y/w

z = z/w

取螢幕上的視口畫素座標(x,y) 轉換到螢幕座標系下:

k1*x+b1 = x'

k2*y+b2 = y'

求出兩個座標系之間的轉換係數。

視口畫素座標系的座標原點位於螢幕中心,螢幕座標系的座標原點位於左上角。

求出k1 = w/2; b1 = w/2

k2 = -h/2; b2 = h/2

螢幕座標向opengl三維座標轉換

很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,pos...

OpenGL由螢幕座標轉換三維座標

很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,pos...

OpenGL 螢幕座標到物體三維座標的轉換

直接看 吧,有注釋。入參 int x,int y 表示螢幕的座標 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx 0.0f glfloat winy 0.0f glfloat winz 0.0f g...