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...