z轴同时垂直于x轴和y轴,它代表一条从屏幕的中心朝向读者的直线。3D笛卡尔坐标系在后面也被我们称作逻辑坐标系。
坐标裁剪
计算机的窗口是按照像素为单位进行量度的。你要在窗口中绘制你的物体,就需要告诉OpenGL如何把逻辑坐标系翻译成屏幕坐标系。
通过指定占据窗口的笛卡尔空间的区域来完成这个任务,这个区域被成为裁剪区域。
换句话说,笛卡尔空间(逻辑坐标)是无限大的,而我们的窗口(屏幕)大小是一定的,或者是800*600,或者是1024*768,我们不可能,也没必要将笛卡尔空间全部的显示在屏幕上,因此,只需要在逻辑坐标中指定出一个裁剪区域,只在屏幕上显示这个区域就可以了。
在二维空间中,裁剪区域就是窗口内最大和最小的x、y值。下图显示了两种常见的裁剪区域
左边这种是坐标原点在窗口左下方,y向上增量,x向右增量。右边这种是原点在窗口中央。
视口:把逻辑坐标映射到窗口坐标
裁剪区域的尺寸很少能刚好和窗口的尺寸相匹配,因此,逻辑坐标必须要通过某种方式映射到屏幕像素坐标。这种映射通过一种叫“视口”viewport的设置来完成。
视口就是窗口内部用于绘制裁剪区域的客户区域。
换句话说,我的窗口,不一定全部用来画我指定的裁剪区域,我可以只使用这个窗口的一部分大小来绘制我的裁剪区域。当然,一般来说视口是被指定成整个窗口大小。
下图显示的就是视口被指定为整个窗口大小。裁剪区域的大小是150*100,窗口的大小是300*200,所以逻辑坐标的1格单位与物理坐标(像素)的2格单位相匹配。
下图是视口小于窗口的情况,我们只使用的窗口的一角来绘制裁剪区域。
当然,你也可以把视口设置成大于窗口的尺寸,这样,窗口只能绘制出裁剪区域的一部分,物体就好像被放大了一样。
投影
不管你在屏幕上看到的物体多么的具有立体感,屏幕实际上只是二维的。那么,OpenGL是如何做到这点的呢,答案就是“三角法与简单的矩阵操作”(所谓“简单”只是老外的幽默)。如果想要真正的搞懂这块内容,大学的线性代数可能会对你有帮助,当然,如果你是数学专业的话。
1、正投影
就是不管远近,所有实际大小相同的物体,在屏幕上也会有相同的大小。如果你会3D MAX的话,MAX的User视图、TOP视图、LEFT视图、RIGHT视图、FRONT视图等等都是正投影的典范。
如果你还不能理解的话,打开《传奇》游戏(或类似的2D游戏),它的场景姑且就可以叫做“正投影”。
2、透视投影
简单的说就是近大远小,3D MAX的perspective视图就是此类,或者你打开《魔兽世界》看看……
转自
http://hi.baidu.com/%B6%A8%B7%E7%B2%A82005/blog/item/2522edee78867d21adafd552.html
- 大小: 7.1 KB
- 大小: 5.7 KB
- 大小: 8.9 KB
- 大小: 8.4 KB
分享到:
相关推荐
OpenGL 学习笔记整理.
Unity+OpenGL学习笔记
NULL 博文链接:https://swinex.iteye.com/blog/1547004
NULL 博文链接:https://sudongfeng.iteye.com/blog/905382
现代OpenGL+Qt学习笔记之二:程序框架http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77917697源码。
使用opengl生成简单的动画效果。这是本章的最后一个实例,接下来学习opengl的基本绘图。
这一节开始学习opengl的几何图形绘制。借助opengl提供的图元绘制函数,首先从最基本的绘制点图元开始
opengl suberbible第四版 几何图元和缓冲区的代码整理。为visual studio 2012可运行工程,如需学习,可下载查看。
在我学习JOGL的时候,只找到了英文版的pdf资料,看不懂。。然后我找了C语言版的OpenGL学习教程,对照着将JOGL学完了,并写了一个word作为笔记
OpenGL学习
opengl,freeglut 基本绘制矩形矩形实例代码。
OpenGLES20学习笔记,word文档
这是我的学习nehe的opengl教程的笔记,觉得跟大家分享一下有好处
非常好的opengl笔记,适合想自学opengl编程的人
package ljh.opengl;是对OpenglES的一些封装。 package ljh.game;是对一些游戏常用的代码的封装 都没写完! 最近改学IOS了 看看什么时候能补充完。
高级openGL教程,基于shader的openGL编程教程,快速上手
基于opengl es 2.0 编程指南阅读下记录的知识小结,由于该书是英文版本,希望此笔记可以对其他看该书的人有点用。
收集到的OpenGL学习资料,内容包括: 1.OpenGL着色语言.rar 2.NEHE教程.pdf 3.openglapi.CHM 4.opengl编程与实例.pdf 5.openGL图像系统详解(英).pdf 6.vc下OpenGL开发框架与应用.pdf 7.北大 openGL 课程.pdf
现代OpenGL+Qt学习笔记之三:显示一个彩色三角形http://blog.csdn.net/chaojiwudixiaofeixia/article/details/77927876源码。