OPENGL_单位长度对应屏幕像素




gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble zNear,GLdouble zFar)

fovy:视角,指定视景体的视野的角度,以度数为单位,y轴的上下方向(x轴的视角可以由y轴视角和视景体的宽高比计算出)

aspect:视景体的宽高比(窗口的纵横比,即x/y)

zNear:指定观察者到视景体的最近的裁剪面的距离(必须为正数)

zFar:指定观察者到视景体的最远的裁剪面的距离(必须为正数)


在初始化OpenGL时,需要使用gluPerspective设定视景体,视景体的参数,屏幕的分辨率共同决定了,OpenGL中1个单位(一般为1米)对应屏幕多少像素

计算方法

以gluPerspective(45,w/h,0.1,1000),屏幕分辨率1024*768为例

0.0414 少写一个0

计算屏幕近景裁剪面的高 h = 2*tan(22.5)*0.1=0.082842

0.0828米对应 768像素

那么1米就对应 768/0.0828 = 9275像素(图像在z位置为0的情况)

如果z不为0

0.0414 少写一个0


h = 2*tan(22.5)*0.15 = 0.12426米

那么1米就对应 768/0.12426 = 6180像素


所以

so 1米单位长度与像素的换算关系为

1米 = 屏幕分辨率的高/裁剪面的高 = 768/ (2*tan(22.5)*(ZNear+z))

其中ZNear是图中的0.1

z是0.15-0.1=0.05

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值