glTranslatef

如果你想在距离屏幕中心的1/4的位置画一个三角形,你有N种方法来实现。如syy64所说的,当你在距离屏幕中心1/4处看到一个三角形的时侯,实际上是一个空间的三角形投影到了屏幕上。

当你在OpenGL程序中定义了投影之后,glTranslatef的移动单位是可以与屏幕像素值发生关系的。举个例子,我定义透视投影如下:
gluPerspective(45,w/h,0.1,1000);

这时,屏幕相当于近裁剪面,视点在屏幕向外1分米的地方。当然注意!这里1分米跟我们现实世界的1分米还是不一样的,不是说,你把眼睛凑到屏幕前1分米就相当于视点所在位置了。那么,这里所定义的1分米到底是个什么概念呢?它实际上是虚拟世界坐标系中的1分米。

我们看第一个参数,45。表明视野在竖直方向的张角是45度,于是我们可以算出近裁剪面的高度:h=2*tan(22.5*PI/180)*0.1=0.082842712。
也就是说,近裁剪面约为8.3厘米高。换句话说,虚拟世界中的8.3厘米,就相当于我们的屏幕高,如果你的显示器是1024*768分辨率的话,那么虚拟世界中的8.3厘米就等价于768像素。这样,就将虚拟坐标单位和屏幕像素值建立起了联系。

如果你要在距离屏幕中心1/4的地方(假设为水平距离)画一个物体的话,就相当于在距离中心点1/4*1024=256像素的地方绘图。这时,在近裁剪面上,相当于移动了256/768*8.3=2.76厘米。
在虚拟三维世界中的任何物体,只要其形心的x坐标和z坐标满足如下关系:
|x|*0.1/|z|=0.0276,并且处于视锥之内的话,都将被画在距离屏幕中心1/4的地方。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值