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
分享到:
相关推荐
这篇学习笔记1主要会探讨基础的OpenGL设置和渲染原理。 在OpenGL编程中,我们首先需要设置上下文环境,这通常通过窗口系统接口(如GLUT或SDL)完成。在"base.cpp"这个文件中,我们可能看到初始化OpenGL窗口的代码,...
在本节“code_opengl学习笔记3-1-在3D中绘制点”中,我们将深入探讨如何使用OpenGL来在三维空间中绘制点,这是构建更复杂图形的基础。 在OpenGL中,点是最基本的图元之一,它不具有长度、宽度或深度,但当在屏幕上...
OpenGL 是一种广泛应用的图形库,主要用于创建2D和3D图像。它在OpenGLES的基础上运行,后者是OpenGL的嵌入式版本,适用于移动设备...学习OpenGL不仅涉及理论知识,还需要实践操作,通过实际项目来掌握这些概念和技巧。
Java OpenGL(JOGL)学习笔记 在学习 JOGL 时,我们需要了解图形显示器是如何工作的。图形显示器是一个由许多像素点组成的绘图区域,图形系统的核心是一个魔法画笔,这支画笔能以非常快的速度移动到一个确定的像素...
OpenGL学习笔记1 - 基本的运行框架 在计算机图形学领域,OpenGL是一个广泛使用的跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D图像。本笔记将聚焦于如何在Visual Studio 2012环境下搭建一个基本的...
### OpenGL ES 2.0 学习笔记 #### 一、概述 《OpenGL ES 2.0 学习笔记》是一份针对英文版《OpenGL ES 2.0 Programming Guide》的阅读总结,旨在帮助读者更好地理解和掌握OpenGL ES 2.0的核心概念和技术要点。以下...
在"OpenGL学习笔记.doc"中,可能包含以下内容: 1. **基本概念**:介绍OpenGL的架构、管线模型以及主要的数据类型和函数。 2. **环境设置**:详述如何在Visual C++ 6.0中创建OpenGL项目,设置链接器选项,以及如何...
总之,这个OpenGL学习笔记展示了如何创建基本的3D立方体,包括设置图形环境、深度测试、视口和投影矩阵的配置,以及使用顶点数据绘制几何体。它是学习OpenGL基础和理解3D图形渲染流程的一个良好起点。
在配合的文章《OpenGL学习笔记——JNI篇》中,作者通过JNI(Java Native Interface)来演示如何在Java程序中调用OpenGL进行图形绘制。JNI是Java平台的一部分,允许Java代码和其他语言写的代码进行交互,这在需要高...
这份笔记包含了第15章之前的全部代码示例,这些示例是基于C++语言实现的,主要关注OpenGL的核心功能和编程模式。在压缩包中,我们可以找到一系列与OpenGL相关的源代码文件,如`五子棋.cpp`、`完成的清单3.9.cpp`等,...
3. **OpenGL实现的版本号**:OpenGL版本随着技术的发展而不断更新,新版本通常包含更多的特性、更高的性能和更好的错误处理。检测OpenGL版本能确保你的系统可以运行需要特定版本API的应用程序。 4. **GLU工具库版本...
OpenGL超级宝典是一本深入学习图形编程的权威书籍,其中的笔记20主要涉及如何使用uniform变量和uniform块来向着色器输入数据。在3D图形编程中,OpenGL是一个广泛应用的图形库,它允许程序员控制图形硬件进行复杂的...
### Delphi XE2 之 FireMonkey 入门学习笔记 #### 一、Delphi XE2 FireMonkey 概述 Delphi XE2引入了一种全新的跨平台UI框架——FireMonkey(简称FMX),该框架支持Windows和Mac OS X操作系统,并且能够提供丰富的...
这篇教程和学习笔记将帮助你深入理解CEGUI的原理和使用方法。 首先,CEGUI的核心设计理念是组件化。这意味着它包含了一系列可复用的UI元素,如按钮、文本框、滚动条等,这些元素都可以单独配置和定制。在HTML和Word...
在"games101计算机图形学学习笔记分享"中,我们可以期待了解到一系列关于这个主题的基础概念、理论和技术。 首先,笔记可能会从基础的图形学原理开始讲解,包括二维和三维坐标系的概念,以及如何在笛卡尔坐标系中...
VTK,全称为 Visualization Toolkit,是一款强大的开源可视化库,尤其在3D图形渲染和科学数据可视化方面具有广泛的应用。...希望这篇“初学者的VTK学习笔记”能对你有所帮助,祝你在VTK的学习旅程上取得成功!
"OpenGL - Nate Robin.rar"这个压缩包文件包含了一系列与OpenGL相关的学习资源,由Nate Robin提供,可能对学习和理解OpenGL有极大帮助。Nate Robin在图形编程领域有一定的影响力,其资料被《OpenGL SuperBible》这样...