3D编程基础知识(opengl)

合集下载

opengl

opengl

OpenGL是一个非常优秀的图形软件接口。

OpenGL官方网站(英文)/下面将对Windows下的OpenGL编程进行简单介绍。

1.安装GLUT工具包GLUT不是OpenGL所必须的,但它会给我们的学习带来一定的方便,推荐安装。

Windows环境下的GLUT本地下载地址:glut-install.zip(大小约为150k)也可直接去官方网站下载:/resources/libraries/glut/glutdlls37beta.zipWindows环境下安装GLUT的步骤:1)将下载的压缩包解压,得到5个文件放到以下三个指定位置:2)glut.h放到GL文件夹(VC6中一般是:C:\Program Files\Microsoft VisualStudio\VC98\Include\GL,VC2005中是:C:\Program Files\Microsoft Visual Studio 8\VC\Include,新建GL文件夹,再将glut.h放到GL文件夹中)。

3)glut.lib和glut32.lib放到静态函数库所在文件夹(VC6中一般是:C:\ProgramFiles\Microsoft Visual Studio\VC98\Lib, VC2005中是:C:\Program Files\Microsoft Visual Studio 8\VC\Lib)。

4)glut.dll和glut32.dll放到操作系统目录下面的system32文件夹内。

(典型的位置为:C:\Windows\System32,有些机器可能为C:\WINNT\System32)2.建立一个OpenGL工程这里以VC为例:首先从开始->所有程序->Microsoft Visual C++ 6.0菜单中打开VC,也可单击文件:C:\Program Files\Microsoft Visual Studio\VisualC++6\Common\MSDev98\Bin\msdev.exe打开VC,在VC中选择File->New->Project,然后选择Win32 Console Application,输入一个工程名,设为Pixel,然后按OK。

opengl相关3点成面和4点成面的原理

opengl相关3点成面和4点成面的原理

opengl相关3点成面和4点成面的原理OpenGL是一个用于渲染2D和3D图形的开放式图形库。

它使用一组API来处理图形渲染,包括几何图形的创建和变换,光照,纹理和着色等等。

在OpenGL中,可以通过3点或4点来创建一个面(或称为三角形或四边形)。

1.三点成面的原理:在OpenGL中,一个面是由三个顶点组成的。

这三个顶点将创建一个三角形,而该三角形也是计算机图形学中最基本的几何图形。

创建三角形的步骤如下:步骤1:定义顶点坐标首先,需要定义三个顶点的坐标。

顶点坐标是一个三维坐标(x,y,z),其中x、y表示顶点在屏幕上的位置,z表示顶点的深度,即相对于屏幕观测点的距离。

步骤2:创建缓冲区并绑定需要创建一个缓冲区对象,并将其绑定到OpenGL的上下文中。

缓冲区对象用于存储顶点数据。

步骤3:将顶点数据传输到缓冲区将定义好的顶点坐标数据传输到缓冲区对象中。

可以使用glBufferData函数来传输数据。

步骤4:创建着色器程序着色器程序用于定义顶点和片元的处理逻辑。

在这里,需要创建一个顶点着色器和一个片元着色器。

顶点着色器负责处理顶点的位置,而片元着色器负责处理像素的颜色。

步骤5:设置顶点属性指针需要告诉OpenGL如何解释顶点数据。

可以使用glVertexAttribPointer函数设置顶点属性指针。

步骤6:绘制三角形最后,使用glDrawArrays函数或glDrawElements函数将三角形绘制在屏幕上。

2.四点成面的原理:在OpenGL中,一个面也可以由四个顶点组成。

创建四边形的步骤与创建三角形的步骤类似,只不过多了一个顶点。

步骤1:定义顶点坐标同样,需要定义四个顶点的坐标。

步骤2:创建缓冲区并绑定与三角形的创建步骤相同,需要创建一个缓冲区对象,并将其绑定到OpenGL的上下文中。

步骤3:将顶点数据传输到缓冲区将定义好的顶点坐标数据传输到缓冲区对象中。

步骤4:创建着色器程序同样需要创建一个顶点着色器和一个片元着色器。

关于OpenGL模式和D3D模式的解释

关于OpenGL模式和D3D模式的解释

OpenGL的英文全称是“Open Graphics Library”,顾名思义,OpenGL便是“开放的图形程序接口”。

opengl就是软件加速,没有的都为硬件加速,软件加速使得画面更为流畅,细腻,看上去比较舒服,硬件加速比较快,闪动的利害,画面也粗糙,但运动比较快,一般游戏中会用到,安装完显卡带的驱动程序而非windows自带的那个都会把opengl给安装上的。

DirectX是一种图形应用程序接口,简单的说它是一个辅助软件,一个提高系统性能的加速软件,由微软创建开发的,微软将定义它为“硬件设备无关性”。

Direct是直接的意思,X是很多东西,加在一起就是一组具有共性的东西前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商的用户的认知程度并不高,未来的OpenGL发展前景迷茫关于OpenGL模式和D3D模式的解释- 独乐乐不如齐乐乐点击返回766首页查看海量游戏库| 最全游戏下载| 玩家抢号专区|游戏美女云集| 随心畅谈网游| 全球网游动态| 网游百态大观| 热门话题探讨| 业内走向QQ三国>> 经验心得>> 综合>> 正文关于OpenGL模式和D3D模式的解释2007年10月10日作者:佚名进入论坛打开三国游戏图标后,在登陆前有几项设置,其中1项是选择显卡驱动模式的,应该有不少朋友不明白意思,我在新手训练区也没发现相关资料,就在网上搜了一下发到这里,希望对个别朋友有帮助,自己本来就懂的就当我说废话了,以下是正文:D3D (Direct3D):这是微软为提高3D 游戏在Win95/98中的显示性能而开发的显示程序。

这个基于显示光栅加速引擎非常强大和复杂,它在显示满屏状态,提供多边形计算、贴图场景等优化能力。

由于其只能在满屏提供优化能力,所以在3DSMAX中你只能在最大化显示视角时(如最大化显示TOP、RIGHT、LEFT和PERSPECTIVE视角),才能获得加速能力。

OpenGL ES入门

OpenGL ES入门

OpenGL ES入门一、前言OpenGL ES是Khronos Group创建的一系列API中的一种(官方组织是:/)。

在桌面计算机上有两套标准的3DAPI:Direct3D和OpenGL。

Direct3D实际上是运行在windows操作系统上的标准3DAPI,而OpenGL则是跨平台的,适用于Linux、多种UNIX、MAC OS X和windows。

由于OpenGL得到了广范围的认可,所以,基于嵌入式的3DAPI---OpenGL ES也就应运而生。

沃Phone使用的芯片高通7227,它能很好的提供对OpenGL ES的支持,了解OpenGL ES 的种种特性,不仅能开发出很好的适用于沃Phone的3D游戏、3D应用等。

借助于OpenGL ES的平台无关性,只要稍微修改EGL,理论上就可以将开发的3D游戏、3D应用移植到任何支持OpenGL ES的平台上去。

本篇文档就从零开始,深入简出,跟大家介绍一下OpenGL ES的原理和开发。

OpenGL ES简介什么是OpenGL ESOpenGL ES是一套适用于手持嵌入式设备的3DAPI。

比如手机、PDA、汽车、航空等等上面都可以使用到OpenGL ES。

OpenGL ES是免授权费的、跨平台的、功能完善的2D和3D 图形应用程序接口API,它是桌面OpenGL的子集,是从OpenGL裁剪定制而来的。

由于手持设备的相关局限性,OpenGL ES相对于OpenGL不可避免的进行了相关的精简。

去除了OpenGL中比如glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POL YGONS)等复杂图元等许多非绝对必要的特性。

但是OpenGL方面的很多知识,OpenGL ES都是可以借鉴的。

OpenGL ES其实是一个状态机(State machine),它保存一种状态直至其改变。

每个状态都有本身默认的缺省值,可以通过相关的查询和设置函数进行相关的查询和设置。

学习vc++利用OpenGL实现三维绘图

学习vc++利用OpenGL实现三维绘图

利用OpenGL实现三维绘图在三维绘图蓬勃发展的过程中,计算机公司推出了大量的三维绘图软件包。

其中SGI公司推出的OpenGL,作为一个性能优越的图形应用程序设计界面(API)异军突起,取得了很大的成就。

它以高性能的交互式三维图形建模能力和易于编程开发,得到了Microsoft、IBM、DEC、Sun、HP等大公司的认同。

因此,OpenGL已经成为一种三维图形开发标准,是从事三维图形开发工作的必要工具。

1、初始化OpenGL绘图环境1.1 定义颜色格式和缓冲模式OpenGL提供两种颜色模式:RGB(RGBA)模式和颜色索引模式(调色板)。

在RGBA 模式下所有颜色的定义用RGB三个值来表示,有时也加上Alpha值(表示透明度)。

RGB 三个分量值的范围都在0和1之间,它们在最终颜色中所占的比例与它们的值成正比。

如:(1、1、0)表示黄色,(0、0、1)表示蓝色。

颜色索引模式下每个象素的颜色是用颜色索引表中的某个颜色索引值表示(类似于从调色板中选取颜色)。

由于三维图形处理中要求颜色灵活,而且在阴影,光照,雾化,融合等效果处理中RGBA的效果要比颜色索引模式好,所以,在编程时大多采用RGBA模式。

OpenGL提供了双缓存来绘制图像。

即在显示前台缓存中的图像同时,后台缓存绘制第二幅图像。

当后台绘制完成后,后台缓存中的图像就显示出来,此时原来的前台缓存开始绘制第三幅图像,如此循环往复,以增加图像的输出速度。

设置窗口显示模式函数:void auxInitDisplayMode(AUX_DOUBLE | // 双缓存方式AUX_RGBA// RGBA颜色模式);1.2 设置光源OpenGL的光源大体分为三种:环境光(Ambient light),即来自于周围环境没有固定方向的光。

漫射光(Diffuse light)来自同一个方向,照射到物体表面时在物体的各个方向上均匀发散。

镜面光(Specular light)则是来自于同一方向,也沿同一个方向反射。

使用opengl程序绘制实线虚线和点划线

使用opengl程序绘制实线虚线和点划线

使用opengl程序绘制实线虚线和点划线OpenGL是一种用于绘制2D和3D图形的跨平台编程接口。

它提供了一套功能强大的函数和工具,可以在各种显示设备上渲染图形。

在OpenGL中,可以使用不同的绘制模式来绘制实线、虚线和点划线。

本文将介绍如何使用OpenGL程序实现这些效果。

在开始之前,我们首先需要安装OpenGL库和开发环境。

OpenGL可以在不同的平台上使用,例如Windows、Linux和macOS。

对于Windows用户,可以使用MinGW或者MSYS2等工具链来配置开发环境。

对于Linux和macOS用户,可以使用GCC和Xcode来配置开发环境。

安装完成后,我们可以开始编写OpenGL程序。

在OpenGL中,绘图是通过一系列函数和状态来实现的。

以下是一个基本的OpenGL程序的框架:```cpp#include <GL/glut.h>void displa//清空屏幕glClear(GL_COLOR_BUFFER_BIT);//设置绘图颜色glColor3f(1.0f, 1.0f, 1.0f);//绘制实线glBegin(GL_LINES);glVertex2f(-0.5f, 0.0f);glVertex2f(0.5f, 0.0f);glEnd(;//绘制虚线//...//绘制点划线//...//刷新缓冲区glutSwapBuffers(;int main(int argc, char** argv)// 初始化窗口和OpenGL环境glutInit(&argc, argv);glutInitDisplayMode(GLUT_DOUBLE , GLUT_RGB); glutInitWindowSize(800, 600); glutCreateWindow("OpenGL Program");//注册绘图函数glutDisplayFunc(display);//进入主循环glutMainLoop(;return 0;```在以上程序中,`glClear(GL_COLOR_BUFFER_BIT)`用于清空屏幕,`glColor3f(1.0f, 1.0f, 1.0f)`用于设置绘图颜色。

OpenGL图形编程3二维观察与三维变换(陈永强)

行投影(正射投影),另一种是透视投影。
在投影变换之前必须指定当前处理的是投影
变换矩阵: glMatrixMode(GL_PROJECTION); glLoadIdentity();
34
3.2.5投影变换
平行投影
视景体是一个矩形的平行管道,也就是一个长方
体,其特点是无论物体距离相机多远,投影
后的物体大小尺寸不变。
OpenGL图形编程
武汉纺织大学数学与计算机学院 授课教师:陈永强 教授
1
3. OpenGL二维观察与三维变换
3.1二维观察 3.2三维变换
2
3. 1OpenGL二维观察
实现二维观察的步骤:
3.1.1指定矩阵堆栈 3.1.2指定裁剪窗口 3.1.3指定视区
3
3.1.1指定矩阵堆栈
这段程序中,先声明了一个数组来保存 4×4 矩阵的值,注意这里
矩阵按列优先顺序保存,这意味着先从上往下遍历每一列;
然后使用glLoadMatrix函数将定义的矩阵设置为当前操作的矩阵 。
18
3.2.2模型视图矩阵
如果需要执行变换,即把定义的矩阵乘到模型视图矩阵
中。 可以使用函数 glMultmatrix,其函数原型如下: void glMultMatrix{fd}(const TYPE *m); 参数 m 为一个以列优先顺序保存16个连续值的数组。
换和模型变换是相同的,把这两者分开完全是为了程 序员的方便,向后移动对象和向前移动参考系之间并 没有本质差别。术语“模型视图”表示你可以把这类 变换视为模型变换或视图变换,但实际上并无区别, 因此称它为模型视图变换。
12
3.2.1变换种类
投影变换:对视见空间进行修剪和改变大小;

opengl画点函数

opengl画点函数OpenGL(Open Graphics Library)是一种用于渲染2D和3D图形的跨平台编程接口。

它提供了一系列函数,用于绘制各种图形元素,包括点、线、多边形等。

在本文中,我们将重点介绍OpenGL的画点函数,展示如何使用它来绘制点。

在OpenGL中,绘制点的函数是glBegin(GL_POINTS)和glVertex2f(x, y),其中(x, y)表示点的坐标。

首先,我们需要在程序中初始化OpenGL环境,并设置视口和投影矩阵。

然后,通过调用glBegin(GL_POINTS)函数告诉OpenGL接下来要绘制的是点,接着通过glVertex2f(x, y)函数指定点的坐标。

下面是一个简单的示例程序,演示了如何使用OpenGL的画点函数绘制一个点:```c++#include <GL/glut.h>void init() {glClearColor(0.0, 0.0, 0.0, 0.0);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(0.0, 400.0, 0.0, 400.0);}void drawPoint() {glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 0.0, 0.0);glPointSize(5.0);glBegin(GL_POINTS);glVertex2f(200.0, 200.0);glEnd();glFlush();}int main(int argc, char** argv) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(400, 400);glutInitWindowPosition(100, 100);glutCreateWindow("OpenGL Draw Point");init();glutDisplayFunc(drawPoint);glutMainLoop();return 0;}```在上面的示例程序中,我们首先通过glutInit函数初始化了OpenGL 环境,并设置了显示模式、窗口大小和位置。

LearnOpenGL概念(一)

LearnOpenGL概念(⼀)OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是⽤于渲染2D、3D⽮量图形的跨语⾔、跨平台的应⽤程序编程接⼝(API)。

这个接⼝由近350个不同的函数调⽤组成,⽤来绘制从简单的图形⽐特到复杂的三维景象。

⽽另⼀种程序接⼝系统是仅⽤于Microsoft Windows上的Direct3D。

OpenGL常⽤于CAD、虚拟现实、科学可视化程序和电⼦游戏开发。

OpenGL被设计为只有输出的,所以它只提供渲染功能。

核⼼API没有窗⼝系统、⾳频、打印、键盘/⿏标或其他输⼊设备的概念。

虽然这⼀开始看起来像是⼀种限制,但它允许进⾏渲染的代码完全独⽴于他运⾏的操作系统,允许跨平台开发。

OpenGL没有提供着⾊器编译器,⽽是由显卡驱动来完成着⾊器的编译⼯作,也就是说,只要显卡驱动⽀持对GLSL的编译它就能运⾏,所以能够跨平台。

⽽DirectX是由微软控制着⾊器的编译,就算⽤了不同的硬件,同⼀个着⾊器的编译也是⼀样,所以⽀持的平台只有微软⾃⼰的产品。

OpenGL:⼀般它被认为是⼀个API(Application Programming Interface, 应⽤程序编程接⼝),包含了⼀系列可以操作图形、图像的函数。

实际仅仅是由Khronos组织制定并维护的规范(Specification)。

OpenGL规范严格规定了每个函数该如何执⾏,以及它们的输出值。

⾄于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者⾃⾏决定。

实际的OpenGL库的开发者通常是显卡的⽣产商。

核⼼模式与⽴即渲染模式:早期OpenGL使⽤⽴即渲染(Immediate mode,也就是固定渲染管线)容易使⽤和理解,但是效率太低。

从OpenGL3.2开始废弃⽴即渲染模式,⿎励使⽤核⼼模式(Core-profile)。

核⼼模式:要求使⽤者真正理解OpenGL和图形编程,有⼀些难度,然⽽提供了更多的灵活性,更⾼的效率,可以更深⼊理解图形编程。

open_gl_es规范基础知识

OpenGL ES Common/Common-Lite 规范OpenGL ES 基本知识OpenGL ES(以后简写为“GL”)仅关心如何在帧缓存(framebuffer)中渲染(渲染后的值将保存到帧缓存中)。

它不支持其他的外围设备与图形硬件关联,例如鼠标和键盘。

编程人员必须通过其他的途径获取用户操作,例如 Khronos Open KODE API。

GL在一定数量的可选模式下绘制原始对象。

每个原始对象可以是一个点,线段或者一个三角形。

每种模式可以独立的改变。

每个设置之间不相互影响(虽然一些模式可能最终影响帧缓存中的最后结果)。

模式被设置,原始对象被定义,其他GL操作通过在函数或者程序中调用。

原始对象是一组被定义好的数据结构,包含一个或者多个顶点。

一个顶点定义了一个点,或一个边的结束点,或者一个三角形的2条边相交的顶点。

数据(包括位置坐标,颜色,规格化,纹理坐标)保存在一个顶点中,每个顶点按照顺序,以相同方式,独立的被处理。

唯一例外的是,如果一组顶点必须在一个指定的矩形区域内被裁减,这个操作将导致,一些顶点可能被修改,一些新顶点可能被创建。

裁减的类型依赖于这组顶点数据代表的描绘类型。

命令永远按照顺序执行,虽然可能命令的实现会有不确定的延时。

比如,一个原始对象在必须在任何子序列影响帧缓存之前绘制。

它也意味着查询和像素读取操作返回的状态时,之前的所有的GL命令执行完毕。

通常,GL 命令必须在其他子序列在造成任何影响之前完成。

在GL中,数据绑定发生在调用的时候。

这意味着命令执行时,使用的数据会被解释。

即使命令要求一个指向数据的指针,这些数据当调用的时候即被解释,任何子序列的对数据的改变都不会产生影响(除非后继的操作中使用了同样的指针)。

GL提供对3D,2D图形的基本操作。

包括特定的矩阵变换,光照方程系数,抗锯齿,像素更新操作。

它不提供复杂几何元素的描述或者建模。

另一种对这种解决方案的描述是GL提供一些途径去描述如何渲染复杂的几何对象,而不直接描述此类复杂的对象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3D编程基础知识(OpenGL)
一、前言
科学计算可视化、计算机动画、虚拟现实是计算机图形学领域内三大活跃的发展方向,它们的技术核心都是三维真实感图形。

而OpenGL就是这三维真实感图形的构造之一。

二、概述
1、Direct3D & OpenGL
Direct3D是Microsoft的DirectX其中的一个COM组件,目前最新版本是Direct9.0c;OpenGL最初由SGI开发,目前由OpenGL体系结构审核委员会(ARB)所维护。

OpenGL ARB 是个行业协会,负责OpenGL以及相关技术的发展和演变。

OpenGL ARB由下面这些计算机图形行业的领先企业所组成:3Dlabs、Apple、ATI、Dell、IBM、Intel、NVIDIA、SGI和Sun Microsystems。

最新的规范是2.0。

有两套实现,一套是SGI的OpenGL实现,一套是Microsoft 的OpenGL实现。

目前Microsoft的OpenGL只支持1.1规范。

Direct3D:1、适合做游戏开发。

DirectX是非常成熟的游戏开发的组件,辅助的功能库、数学库都很强大和成熟,如D3DX.lib中包含的大量辅助函数,而OpenGL没有这些相关的东西,它只专注于3d的渲染,辅助的东西不得不由第三方提供,或者自己开发...而且DirectX更新比较快。

2、Direct3D是面向对象的COM实现。

OpenGL只是一套面向结构的图形API。

3、OpenGL不支持一些低端显卡。

OpenGL:1、跨平台性。

可应用在Windows、OS/2、Unix、Max等系统上。

2、在光源和纹理的处理上性能比较优秀。

2、OpenGL的发展
OpenGL(Open Graphics Library),开放图形程序接口。

1、1992年7月,SGI公司发布OpenGL1.0。

2、1995年,SGI发布OpenGL1.1 。

3、2001年8月,ARB发布OpenGL1.3规范。

4、2003年7月,ARB公布OpenGL1.5规范。

5、2004年8月,ARB发布OpenGL2.0规范。

3、OpenGL的工作结构
Application
OpenGL Command
OpenGL DLL
Server DLL
Win32 DDI
Video Driver
OpenGL DLL:opengl32.dll,glu.dll
Server DLL:Winsrv.dll
Win32 DDI:Win32设备驱动接口
三、OpenGL基本功能
(1) 建模功能(点、线、复杂曲线、曲面)
(2) 变换功能(模型变换:平移、旋转、缩放等;投影变换:透视投影、正射投影)
(3) 颜色模式(RGBA颜色模式、索引颜色模式)
(4) 光照材质(光照模型:辐射光、环境光、漫反射光、镜面光。

材质:光的反射率)
(5) 图像处理(图象显示、增加)
(6) 纹理映射(包含颜色、alpha值、亮度等数据的矩形数据)
(7) 动画制作(双缓存动画:后台缓存计算场景、生成动画,前台缓存显示后台缓存已画好的画面)
(8) 交互技术(选择、拾取、反馈三种机制)
四、OpenGL的组成
1、(1)OpenGL核心函数(115个函数,函数名前缀为gl)opengl32.dll
(2)OpenGL实用库函数(43个函数,函数名前缀为glu) glu.dll
(3)OpenGL辅助库函数(31个函数,函数名前缀为aux)glaux.dll
(4)Windows专用函数
(5)Win32 API函数
(6)OpenGL状态变量
2、学习界面库:Glut32.dll
五、OpenGL变换
1、三维图形的输出过程
计算机屏幕上只能表现二维图象,在三维图形到二维平面之间,需要什么样的变换,才能真实反映
世界。

我们用照相机来模拟这一个过程。

首先,在相机的前面是真实的三维世界,而在相机的取景器上出现的是二维平面。

投影变换---使用变焦镜头,可以在不改变相机与被摄物体之间的空间距离的情况下,改变被摄物体在取景器中投影的大小。

模型变换---改变被摄物体在取景器中的位置。

视点变换---人通过改变相机的方向和位置,可以改变出现在取景器中的景物;改变相机与被摄物体之间的空间距离,使被摄物体在取景器中的大小变化。

视口变换---冲洗相片底片时,还可以调整成像的位置,仅仅使照片中的影像的一部分显现出来。

2、坐标系和坐标变换
三维世界使用世界坐标系,屏幕使用屏幕坐标系。

几何变换矩阵
投影变换矩阵
视图处理矩阵
视口处理矩阵
3、投影变换
(1)平行投影
Void glOrtho(Left, Right, Bottom, Top, Near, Far);
(2)透视投影
Void glFrustum(Left, Right, Bottom, Top, Near, Far);
4、模型变换
(1)平移
//将原点向Z负方向移动4.5,所有的Z坐标被加了4.5
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f,0.0f, -4.5f);
// 绘制图形;
glFinish();
(2)旋转
glRotatef(60.0f,0.0f, 1.0f,0.0f);
(3)缩放
glScalef(1.5f,1.0f,1.0f)
5、视口变换
glViewPoint(x, y, width, height)
六、绘制图形
1、绘制
(1)、画点
glBegin( GL_POINTS);
glVertex2f( 0.0f, 0.0f);
glEnd();
glFinish();
(2)、画线
glBegin( GL_LINES);
glVertex2f( 0.5f, 0.0f);
glVertex2f( -0.5f, 0.0f);
glEnd();
glFinish();
2、消隐:清除一个物体被其他物体挡住的部分的操作称做消隐。

3、显示列表
显示列表由一组预先定义并储存起来可以在以后执行的OpenGL函数组成。

3.1 为什么要有显示列表
提高应用程序的运行性能。

3.2 如何使用显示列表
glNewList(1, GL_COMPILE)
glBegin();

glEnd();
glEndList();

glCallList(1);
七、真实感世界生成
1、光源材质
光从物体表面反射形成反射光;光穿透物体,形成透射光;光被物体吸收,转换称为物体的内能。

OPENGL的光照模型分为4个独立组成部分:辐射光、环境光、漫反射光、镜面反射光。

材质是物体对光的反射率。

示例代码:
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0};
GLfloat light_postion[] = {1.0, 1.0, 1.0, 1.0};
glMaterialfv( GL_FRONT, GL_SPECULAR, mat_specular);
glLightfv( GL_LIGHT0, GL_POSITION, light_postion);
glEnable(GL_LIGHT0);
2、纹理映射
纹理是包含颜色、alpha值、亮度等数据的矩形数据。

将纹理数据贴在多边形上,多边型在变换时,仍保证纹理的图案与多边形保持一致性。

例如:采用透视投影观察墙面的时候,远端的砖会变小,而近处的砖会变大。

glTextImage2D(GL_TEXTURE_2D, level, components, width, height, border, format, type, pixels);
十、OpenGL动画
应用程序绘制动画时,可以先将图象绘制到后台缓冲区中,绘制结束后可以通过交换缓冲区,将后台缓冲区已经绘制好的图象直接送到前台缓冲区中,由系统显示功能完成屏幕的显示,此时应用程序已经开始在后台缓冲区中绘制下一幅图象了。

auxSwapBuffers();。

相关文档
最新文档