OpenGL学习(1)-基础知识(2)
2013-06-25 03:46
225 查看
3D编程的基本原则
OpenGL是一种 底层渲染API,我们需要自己通过载入三角形,应用必要的变换和正确的纹理、着色器并在必要时应用混合模式来组合一个模型,能进行大量底层控制。
创建用于绘图的窗口时,必须指定希望使用的坐标系统以及指定的坐标如何映射到实际的屏幕像素。
坐标系统
2D笛卡尔坐标系
一个x坐标,一个y坐标构成,x轴水平,y轴垂直,原点(Origin)为(0,0)。
绘图时,指定坐标系统,不同窗口映射模式可能会导致坐标的解释不一致。
x、y垂直相交定义一个xy平面-------任何坐标系统中,两条轴如果直角相交,它们就定义一个平面。
坐标裁剪
窗口是以像素为单位进行度量。
开始在窗口中绘制点、线和形状前,必须告诉OpenGL如何把指定的坐标对翻译为屏幕坐标,可以指定占据窗口的笛卡尔空间区域来完成,称为裁剪区域。
二维空间,裁剪区域是窗口内部 最小和最大的x、y值,所定义到的区域;另一种方法是根据窗口指定原点位置。
可使用OpenGL函数或用于GDI绘图的windows函数来 上下反转或左右反转坐标系统。
Windows窗口的默认映射中,坐标y的值始终为正,并且从上而下递增,在自上而下绘制文本时非常有用,绘制图形不方便。
视口:把绘图坐标映射到窗口坐标
裁剪区域的宽高很少正好与窗口的宽高(像素单位)匹配。
坐标系统必须从 逻辑笛卡尔系统 映射到 物理屏幕像素坐标---------映射是通过一种叫 视口(VIewPort)的设置来指定。
视口就是窗口内部用于绘制裁剪区域的客户区域,简单地把裁剪区域映射到窗口的一个区域,视口可为整个窗口或部分窗口。
逻辑坐标系统的每个增量将与窗口物理坐标系统(像素)的两个增量匹配。
顶点:空间中的一个位置
绘制一个物体时,实际上用的一些更小的图元(Primitives)的形状来组成这个物体。
图元是一维或二维的实体或表面,如点、线、多边形。
3D空间中,把图元组合在一起创建3D物体,如一个三维立方体由6个二维正方形组成,每个正方形代表一个独立的面。
图元的每个角成为顶点(Vertex),这些顶点在3D空间中指定了一个特定的坐标,顶点是2D或3D空间中的一个坐标。
3D笛卡尔坐标
将2D坐标扩展到三维空间,增加深度分量,增加了z轴,垂直于xy平面,代表一条从屏幕中心朝向自己的直线。
左手坐标系:空间直角坐标系中,让左手拇指指向x轴正方向,食指指向y轴正方向,如果中指能指向z轴正方向,称为左手坐标系
右手坐标系:空间直角坐标系中,让右手拇指指向x轴正方向,食指指向y轴正方向,如果中指能指向z轴正方向,称为左手坐标系
投影
三角法和矩阵操作将笛卡尔坐标翻译为可以在屏幕上绘图的二维坐标。
投影(Projection),用于创建几何图形的3D坐标将投影到一个2D表面(窗口背景)。
通过指定投影,可以指定在窗口中显示的视景体(Viewing Volume),并指定如何对它进行变换。
视景体:指成像景物所在空间的集合,是一个空间集合体,投影变换的目的就是定义一个视景体,使得视景体外的多余的部分裁减掉,最终图像只是视景体内的有关部分。
两种投影
正投影(Orthographic Projection),平行投影,需要指定一个正方形或长方形的视景体,视景体外的物体不会被绘制,所有实际大小相同的物体在屏幕上都具有相同大小,不管他们是远是近。正投影中指定
远、近、左、右、顶、底 裁剪平面来指定视景体,视景体内物体被投影到屏幕上。
透视投影(Perspective
Projection),远处的物体看上去比近处小一些,它的视景体为平截头体(Frustum),靠近视景体前面的物体看上去接近原始大小,更逼真。
OpenGL是一种 底层渲染API,我们需要自己通过载入三角形,应用必要的变换和正确的纹理、着色器并在必要时应用混合模式来组合一个模型,能进行大量底层控制。
创建用于绘图的窗口时,必须指定希望使用的坐标系统以及指定的坐标如何映射到实际的屏幕像素。
坐标系统
2D笛卡尔坐标系
一个x坐标,一个y坐标构成,x轴水平,y轴垂直,原点(Origin)为(0,0)。
绘图时,指定坐标系统,不同窗口映射模式可能会导致坐标的解释不一致。
x、y垂直相交定义一个xy平面-------任何坐标系统中,两条轴如果直角相交,它们就定义一个平面。
坐标裁剪
窗口是以像素为单位进行度量。
开始在窗口中绘制点、线和形状前,必须告诉OpenGL如何把指定的坐标对翻译为屏幕坐标,可以指定占据窗口的笛卡尔空间区域来完成,称为裁剪区域。
二维空间,裁剪区域是窗口内部 最小和最大的x、y值,所定义到的区域;另一种方法是根据窗口指定原点位置。
可使用OpenGL函数或用于GDI绘图的windows函数来 上下反转或左右反转坐标系统。
Windows窗口的默认映射中,坐标y的值始终为正,并且从上而下递增,在自上而下绘制文本时非常有用,绘制图形不方便。
视口:把绘图坐标映射到窗口坐标
裁剪区域的宽高很少正好与窗口的宽高(像素单位)匹配。
坐标系统必须从 逻辑笛卡尔系统 映射到 物理屏幕像素坐标---------映射是通过一种叫 视口(VIewPort)的设置来指定。
视口就是窗口内部用于绘制裁剪区域的客户区域,简单地把裁剪区域映射到窗口的一个区域,视口可为整个窗口或部分窗口。
逻辑坐标系统的每个增量将与窗口物理坐标系统(像素)的两个增量匹配。
顶点:空间中的一个位置
绘制一个物体时,实际上用的一些更小的图元(Primitives)的形状来组成这个物体。
图元是一维或二维的实体或表面,如点、线、多边形。
3D空间中,把图元组合在一起创建3D物体,如一个三维立方体由6个二维正方形组成,每个正方形代表一个独立的面。
图元的每个角成为顶点(Vertex),这些顶点在3D空间中指定了一个特定的坐标,顶点是2D或3D空间中的一个坐标。
3D笛卡尔坐标
将2D坐标扩展到三维空间,增加深度分量,增加了z轴,垂直于xy平面,代表一条从屏幕中心朝向自己的直线。
左手坐标系:空间直角坐标系中,让左手拇指指向x轴正方向,食指指向y轴正方向,如果中指能指向z轴正方向,称为左手坐标系
右手坐标系:空间直角坐标系中,让右手拇指指向x轴正方向,食指指向y轴正方向,如果中指能指向z轴正方向,称为左手坐标系
投影
三角法和矩阵操作将笛卡尔坐标翻译为可以在屏幕上绘图的二维坐标。
投影(Projection),用于创建几何图形的3D坐标将投影到一个2D表面(窗口背景)。
通过指定投影,可以指定在窗口中显示的视景体(Viewing Volume),并指定如何对它进行变换。
视景体:指成像景物所在空间的集合,是一个空间集合体,投影变换的目的就是定义一个视景体,使得视景体外的多余的部分裁减掉,最终图像只是视景体内的有关部分。
两种投影
正投影(Orthographic Projection),平行投影,需要指定一个正方形或长方形的视景体,视景体外的物体不会被绘制,所有实际大小相同的物体在屏幕上都具有相同大小,不管他们是远是近。正投影中指定
远、近、左、右、顶、底 裁剪平面来指定视景体,视景体内物体被投影到屏幕上。
透视投影(Perspective
Projection),远处的物体看上去比近处小一些,它的视景体为平截头体(Frustum),靠近视景体前面的物体看上去接近原始大小,更逼真。
相关文章推荐
- OpenGL学习二--基础知识
- OpenGL学习(1)-基础知识(3)
- OpenGL蓝宝书学习系列(一):3D图像的基础知识
- ABAP基础知识学习(一)
- ubuntu 基础学习-vi编辑器和gcc初级知识
- 学习C#基础知识这段时间
- java系统学习(1、基础知识了解)
- flume学习一:flume基础知识
- 学习笔记:第10章 安全性基础知识
- 每天一篇javascript学习小结(基础知识)
- 机器学习 深度学习用到的数学基础知识 标量、向量、矩阵和张量
- Unity3D学习之数据库基础知识
- 深度学习FPGA实现基础知识15(Matlab图像处理“卷积”运算)
- 【2018.03.28学习笔记】【linux基础知识2.14-2.17】
- IOS 开发学习一 基础知识
- Lua基础知识学习
- 黑马程序员学习log第四篇基础知识:JAVA的面向对象之多线程总结
- 黑马程序员学习log第九篇基础知识:JAVA的面向对象之正则表达式及反射总结
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(一)
- 新手学习PHP的一些基础知识