转换屏幕坐标_图形坐标系统

openGL希望所有屏幕可见东西的坐标都是NDC,(normalized device coordinates)。normalized这个词我个人还是比较喜欢的,在程序里经常用它命名一些工具函数,可以理解成按照某个标准或者规范处理一些数值、数据。

将openGL空间的3D坐标转换成NDC一般会经过几步,即经过一些中间坐标系统的表示,为什么不直接转化呢,因为不同坐标系统会对某些操作更加友好,更加擅长。

  • Local space (or Object space)

  • World space

  • View space (or Eye space)

  • Clip space

  • Screen space

先通过一张图表示大致坐标系统转化

2feb5ad206321a82652586a74a7649ac.png

本地坐标系

本地坐标系是相对于物体本身原点而言,是对象占据空间内部的坐标,故又称对象坐标系

本地/世界坐标系转化

接下来就是物体本地坐标系转化成世界坐标系,世界坐标系是相对于现实世界的某个原点的坐标

世界/视口坐标系转化

接下来就是物体世界坐标系转化成视口坐标系,视口坐标系是通过相机或观察角度(point of view)的坐标

视口/裁切坐标系转化

接下来就是物体视口坐标系转化成裁切坐标系,裁切坐标系是[-1.0, 1.0]范围的坐标,并且丢掉这个范围以外的坐标。这个将视口坐标系投影成裁切坐标的过程如果有透视需要,可以添加透视效果

裁切/屏幕坐标系转化

最后一步,将裁切坐标转化成屏幕坐标,这个过程叫视口转化,最后的坐标数据再经过栅格化处理,片元着色器等管道化处理最终显示在屏幕上

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值