opengl中将三维坐标转换到屏幕坐标

来源:互联网 发布:淘宝外卖和口碑的区别 编辑:程序博客网 时间:2024/06/05 04:53

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

原创粉丝点击