网站会员后台管理系统,自己建设网站需要哪些,企业网站建设报价方案,网站域名百度云网站环境建设汇总页
上一篇: OpenGL/C_学习笔记#xff08;三#xff09; 绘制第一个图形 OpenGL/C_学习笔记#xff08;四#xff09;空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头
前置科技树: 线性代数
矩阵/向量定…汇总页
上一篇: OpenGL/C_学习笔记三 绘制第一个图形 OpenGL/C_学习笔记四空间概念与摄像头 空间概念与摄像头前置科技树: 线性代数空间概念流程简述各空间相关概念详述 空间概念与摄像头
前置科技树: 线性代数
矩阵/向量定义和运算: learnglCN-变换
空间概念
流程简述
想要通过OpenGL实现无限空间的场景的展现, 需要将需要显示的顶点的坐标从三维空间经过多个坐标系统(Coordinate System)的转换或映射最后得到标准化设备坐标(Normalized Device Coordinate, NDC) – 每个顶点的xyz坐标都应该在区间[-1.0, 1.0]上超出这个坐标范围的顶点都将不可见接着再转化为屏幕上像素的坐标. 这个过程通常是分步进行的也就是类似于流水线/管线那样子. 将物体的坐标变换到几个过渡坐标系(Intermediate Coordinate System)的优点在于在这些特定的坐标系统中一些操作或运算更加方便和容易. 流程中比较重要的总共有5个不同的坐标系统:
局部空间(Local Space或者称为物体空间(Object Space))世界空间(World Space)观察空间(View Space或者称为视觉空间(Eye Space))裁剪空间(Clip Space)屏幕空间(Screen Space)
下面展示一张直观展示全流程的示意图. 为了将坐标从一个坐标系变换到另一个坐标系我们需要用到几个变换矩阵最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵. 我们的顶点坐标起始于局部空间(Local Space)在这里它称为局部坐标(Local Coordinate)它在之后会变为世界坐标(World Coordinate)观察坐标(View Coordinate)裁剪坐标(Clip Coordinate)并最后以屏幕坐标(Screen Coordinate)的形式结束. 上述图例展示了整个流程以及各个变换过程做了什么
局部坐标是对象相对于局部原点的坐标也是物体起始的坐标.下一步是将局部坐标变换为世界空间坐标世界空间坐标是处于一个更大的空间范围的. 这些坐标相对于世界的全局原点它们会和其它物体一起相对于世界的原点进行摆放.接下来我们将世界坐标变换为观察空间坐标使得每个坐标都是从摄像机或者说观察者的角度进行观察的.坐标到达观察空间之后我们需要将其投影到裁剪坐标. 裁剪坐标会被处理至-1.0到1.0的范围内并判断哪些顶点将会出现在屏幕上(深度检测等).最后我们将裁剪坐标变换为屏幕坐标我们将使用一个叫做视口变换(Viewport Transform)的过程. 视口变换将位于-1.0到1.0范围的坐标变换到由glViewport函数所定义的坐标范围内(绘制窗口宽和高). 最后变换出来的坐标将会送到光栅器将其转化为片段.
各空间相关概念详述 下一篇: OpenGL/C_学习笔记五纹理与材质