opengl的坐标系统变换过程
2017-04-25 16:15
302 查看
前延:由于最近需要绘图渲染相关的学习,所以会不定期的记录自己认为opengl比较有代表性的基础知识点,同样秉承open的精髓与大家分享~~
我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么:
1局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。
2下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点,它们会和其它物体一起相对于世界的原点进行摆放。
3接下来我们将世界坐标变换为观察空间坐标,使得每个坐标都是从摄像机或者说观察者的角度进行观察的。
4坐标到达观察空间之后,我们需要将其投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内,并判断哪些顶点将会出现在屏幕上。
5最后,我们将裁剪坐标变换为屏幕坐标,我们将使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。最后变换出来的坐标将会送到光栅器,将其转化为片段。
我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界坐标(World Coordinate),观察坐标(View Coordinate),裁剪坐标(Clip Coordinate),并最后以屏幕坐标(Screen Coordinate)的形式结束。下面的这张图展示了整个流程以及各个变换过程做了什么:
1局部坐标是对象相对于局部原点的坐标,也是物体起始的坐标。
2下一步是将局部坐标变换为世界空间坐标,世界空间坐标是处于一个更大的空间范围的。这些坐标相对于世界的全局原点,它们会和其它物体一起相对于世界的原点进行摆放。
3接下来我们将世界坐标变换为观察空间坐标,使得每个坐标都是从摄像机或者说观察者的角度进行观察的。
4坐标到达观察空间之后,我们需要将其投影到裁剪坐标。裁剪坐标会被处理至-1.0到1.0的范围内,并判断哪些顶点将会出现在屏幕上。
5最后,我们将裁剪坐标变换为屏幕坐标,我们将使用一个叫做视口变换(Viewport Transform)的过程。视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内。最后变换出来的坐标将会送到光栅器,将其转化为片段。
相关文章推荐
- OpenGL学习脚印: 坐标变换过程(vertex transformation)
- OPENGL的坐标系统变换
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(9)----变换和坐标系统
- 坐标变换——OpenGL ES Common/Common-Lite 规范(版本 1.1.12)
- OpenGL 关于全局固定坐标系统与局部移动坐标系统的理解
- OpenGL坐标变换复习
- 【转载】OPENGL坐标变换
- 基于VC++的OpenGL编程讲座之坐标变换(2)
- D3D9学习笔记(六) 坐标系统及坐标变换 几何体
- opengl中的坐标变换
- OPENGL 点击与选取的基础---坐标变换
- OpenGL 之 坐标变换
- 基于VC++的OpenGL编程讲座之坐标变换
- openGL 坐标的基本变换
- OpenGL之坐标变换
- 基于VC++的OpenGL编程讲座之坐标变换
- 基于VC++的OpenGL编程讲座之坐标变换(1)
- 基于VC++的OpenGL编程讲座之坐标变换
- OpenGL坐标变换
- OpenGL坐标变换专题