计算机图形学_第1页
计算机图形学_第2页
计算机图形学_第3页
计算机图形学_第4页
计算机图形学_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2算机形系

•掌握算机形理的硬件系成

•掌握示器示形的原理

•了解目前的函数

•掌握函数OpenGL的使用

V/

2章算机形系

・2.1算机形系

•2.2形示

•2.3形示系

•2.4形基本件系

•2.5OpenGL介

I_______/

2.1算机形系

■硬件与件示意

■硬件

♦入

♦出

♦存

♦形理

■件

件包

用程序

用模型

3

2.2示

•示

多数采用示器作形示

■分:(器件光性)

(1)极射管CRT(CathodeRayTube)

特点:亮度高、比度好、色彩

缺点:体大,笨重

(2)平板型示器:液晶、等离子

特点:器件薄,适合便携

缺点:亮度和比度相低、

色彩不,价格偏局

5

221CRT

•基本原理

一真空器件,它利用磁生高速的、聚焦的子

束,偏到屏幕的不同位置,屏幕表面的光材料,

八人而生可形

•成

子、聚焦系

加速极、偏系

光屏

y

2.2.1CRT

灯,极和控制成

■灯:生量

■极:由灯加出子束

■控制:加上后,能控制通其中小孔的的

子束的强弱。通高低来控制子数量,即控

制光屏上相点的亮度八

加速电极

垂直偏转板

/71光涂层

水平偏转板

聚焦系统

221CRT

・聚焦系

■通和磁控制子束,”,保亮点足小,

提高分率

•加速极

y

8

221CRT

•偏系

■控制子束,静或磁,生偏

■最大偏角是衡量系性能的最重要的指,示器

短与此有

y

9

221CRT

•光屏

■光物:吸收子束而光

■持光:子束离某点后,点的亮度衰减到初始

1/10所需的

■刷新(Refresh):了光物保持一个定的亮度

刷新率:每秒重屏幕的次数

CRT生定像所需要的最小刷新率

=1秒/光物的持光

(例如)光物的持光40毫秒

刷新率就是

1000/40=25Hzy

10

221CRT

•性能指

像素(Pixel:PictureCell):构成屏幕(像)的最小

元素

■分辨率(Resolution)

♦CRT在水平或直方向位度上能的最大像素个数,位

通常dpi(dotsperinch)

♦在假定屏幕尺寸一定的情况下,也可用整个屏幕所能容的

像素个数描述,如

640M80,800*600,1024*768,1280*1024等等

■分辨率越高示的形就越精

■决定分辨率的因素:光物型、聚焦系和偏系

V)

11

2.2.2彩色CRT

•常用方法

■射穿透法和影孔板法

•射穿透法

■原理:两光涂,色光和色光两光物,子

束穿透光的深浅,决定所生的色

■用:主要用于画示器

■点:成本低

缺点:只能生有限几色光涂生色/土>

低速子束

低速子束

高速子束

高速子束

12

2.2.2彩色CRT

•影孔板法

用:主要用于光描示器

■相

♦外玻璃、光涂和影孔板

♦影孔板被安装在光屏的内表面,用于精确定位像

素的位置

影孔板一—外玻璃

I3涂J

13

2.2.2彩色CRT

点状影孔板工作原理

♦每个像素有3小光点.呈三角形排列

印像素

像素

(a)(b)

♦三支子、、三基色

子、影孔板中的一个小孔和光点呈一直

♦每个小孔与一个像素

(即三个光点)

14

2.2.2彩色CRT

亮度

各子生的子数目,可控制各色光点亮度

如果每支子出的子束的强度有256个等,示器

t能同示256*256*256=16M色,称真彩系

15

2.2.3液晶示器LCT

■LCD:LiquidCrystalDisplay

•液晶的光效

当液晶分子的某排列状在作用下另一排列

状,液晶的光学性随之改°

•液晶示的机理

通能阻塞或光的液晶材料,来自周的或内部

光源的偏振光

y

16

2.2.3液晶示器LCT

•相:六薄板成

■液晶是一介于液体和固体之的特殊物,它具有液

体的流性和固体的光学性。当液晶受到的影响

,就会改它的物理性而生形,此通它的光

的折射角度就会生化,而生色彩

y

17

2.3示系

•主要成

示:示器

控制器:控制示(有的含形加速理器),

通冲来刷新屏幕

■示冲器:包含冲、深度冲等。可以在内存或

示控制器中

入出y

18

2.3示系

•两示系

随机描(random—scan)

子束可以任意移。画

光®(raster—scan)

子束按固定描和次序行。画点

19

2.3.1随机描的示系

•特点

■子束可随意移,只描屏上要示的部分

的示器画

•部件

刷新存器(RefreshingBuffer)

示理器(DPU:DisplayProcessingUnit)

CRT

y

20

2.3.1随机描的示系八

•工作原理

用程序出命令;解析成示理器可接受命令格

式,存放在刷新存器中。刷新存器中所有的命

令成一个示文件,由示理器解行(刷

新);子在屏幕上

修改形,是修改示文件中的某些命令

DPU每秒必至少行30次,即刷新率30Hz

y

21

2.3.2光描的示系

•基本概念

光描:固定方向,M上向下依次水平描

描:一条水平

(frame):1次描生成的像

■水平回期:水平的回期

垂直回期:的回期

22

2.3.2光描的示系

y

23

2.3.2光描的示系

•分辨率

■子束按固定的描序行描条描,每条描

有V个像素N

LHJ24

2.3.2光描的示系

•成

冲存器(FrameBuffer)

控制器(VideoController)

示理器(DisplayProcessor)

CRT

外部设备y

25

2.3.2光描的示系

冲存器

00000110000000

00001001000000

■作用:存屏幕上像素的色00001000100000

00111111111110

■称存(存中的部分存元)00000000000000

00000000000000

存中元数目与示器上像素的帧缓冲器

数目相同,兀与像素一一,■

视须控制器

各元的数潴了其像素的色

■示色的与存中每个元的

位数有

(黑白示系的冲器的每个元

有一位)

显示屏幕

26

2.3.2光描的示系

•色模型-三基色

描述色的三个量。任意互不相的三色(任意两的

合不能生第三色)构成了色空的一基,称三基色

最常用的三基色是色、色与色。三基色通适当的混

合能生所有的色°

RGB三基色

面向硬件

(像机、描和投影等)

■CMY三基色

三色:(C,cyan),

品(M,magenta),黄(Y,yellow)

用于彩色打印,与RGB系:R=l—CG=l-MB=l-Yy

27

2.3.2光描的示系

•存容量

■分辨率〃*N、色个数K与存大小P的系

V>MxNx\log2K]

■明

♦一般像素色用RGB三基色表示

♦若每个存中每个存元有24位(每基色占8位)

即示系最多可同生224色(24位真彩色)

■例:色真彩色、分率是1024x1024的示器,需要

24

1024x1024xlOg22/8=3兆字

I/

28

2.3.2光描的示系

•存容量()

■若存器位固定,屏幕分率与同可用的色数成

反比系

■例:1兆字的存

♦若分率640x480,存每个元可有24位,

可能同示224色

♦若分率1024x768,每个元分得的位数略多

于8,只能工作于256色示模式

|:目前有的PC机的存容量达128M,有必要?一

、原因:存包括深度冲'理内存等

29

2.3.2光描的示系

控制器

■建立存与屏幕像素之的一一,刷新

■构LIL1不一|

光栅

线X地址寄存器

生水平与垂直

器偏转信号

冲Y地址寄存器

川像素颜色值寄存器-------►像素颜色值

工作原理:刷新周期始,依次取出存元的数,放入

像素寄存器,用来控制像素的色,然后X的地址寄存

器的地址加一,如此重,直到描上的最后一1个像素

(,下行,X置。,Y普通卡控制器+

存,

30

31

2.3.2光描的示系

•特点

八、、

♦成本低

♦易于制填充形

♦色彩丰富

♦刷新率一定,与形的程度无

♦易于修改形走

■缺点

♦需要描,形算量大

♦会生混淆(走)

32

2.4件系

•第一次:面向硬件系

■解决形与算机的通接口等,称程序

■程序在已被作操作系一部分,由操作系或硬件厂商

•第二次:建立在程序之上

完成元的生成、的管理等功能

个次上的形支撑件已准化,如GKSPHIGS、CGI等

•第三次:面向用

■主要任是建立形数据构,定、修改和出形

■具有强的交互功能,使用方便,容易,便于和移植

OpenGL、Direct3D属于一次

33

•面向用形系的基本功能

■基本形制(画、埴克元等)

OL.UWBJHTOF0L_UHE_L00e

■形««3.【一

口「E

♦几何OLJ^U^SGLjQQMi.STWP

♦投影

■元着色GL.TFJAMGLE.STRIPGL.TRA!HGL£_FAN

■光照效果

理映射

34

2.5OpenGL介

•基本函数

■与硬件平台无

含GLGLU和GLAUX

■函数包括:描述形元素(元)、属性、几何、

察及其它操作

•用函数工具包(GLUT:OpenGLUtilityToolkit)

■平台无

■窗口系操作功能:建窗口、鼠和入、菜及

事件

V/

35

251OpenGL体系

2.5.2一个的程序simple.cpp

#include<gl/glut.h>

voidmydispiay(){

glClearColor(1.0,1.0,0,0);//,置背景色,默黑色在黄色背景中

glClear(GL_COLOR_BUFFER_BIT);〃清除存制一个色正方形

glBegin(GL_POLYGON);

glColor3f(l.0,0,0);

glVertex2d(-0.5,-0.5);

glVertex2d(-0.5,0.5);

glVertex2d(0.5,0.5);

glVertex2d(0.5,-0.5);

glEnd();

glFlush();

}

voidmain(intargc,char*argv[|)

]

glutCreateWindow(n示例”);

glutDisplayFunc(mydisplay);//mydisplay是回函数

glutMainLoop();

37

*

附:回函数人

•回函数是用程序提供Windows系DLL或其它DLL

用的函数,一般用于截消息、取系信息或理异步

事件

•用程序把回函数的地址指告DLL,而DLL在适当

的候会用函数

•回函数必遵守事先定好的参数格式和方式,否

DLL一用它就会引起程序或系的崩

•如:glutDisplayFunc(mydisplay);

//mydisplay是回函数

<Glut32.dllglutDisplayFuncJ

38

2.5.3OpenGL函数八

•基本几何形状

■点、段和多形

Beizier曲

•属性

色、型(、虚等)

几何:平移、旋、放

■投影:正投影、透投影

•入(GLUT)

和鼠y

39

2.5.4OpenGL函数格式

•函数格式示例:定点函数

函数的功能

/

glVertexf(x:y,z)

属于GL参数个数参数的型

glVertex3

参数指

y

主意每部分的大小写

40

2.5.5相函数八

•包含

OpenGL核心(GL)

OpenGL用(GLU)

OpenGL助(GLAUX)

OpenGL工具(GLUT)

OpenGL窗口系的展(WGL,等等)

・功能

■渲染(Rendering)功能

♦提供形制所需的各功能函数

窗口管理功能

♦管理窗口系的所有相功能,如鼠的响,各窗口事件

等等?

41

2.5.5相函数

•OpenGL核心(GL)

部分函数用于常的、核心的形理,是OpenGL

的核心部分

包含300多个函数,函数名前一律是“gl”

Windows平台上

♦文件“GL.H”

♦文件“OPENGL32.LIB”

♦接“OPENGL32.DLL”

核心可以在所有的OpenGL平台上运行

42

2.5.5相函数

OpenGL用(GLU)

■部分函数通用核心的函数,者提供相的用

法,一些的操作。如:坐、理映射、制

球、茶等多形

包含50个函数,函数名前一律是“ghi”

Windows平台上

♦文件“GLU.H”

♦文件“GLU32.LIB”

♦接“GLU32.DLL”

用可以在所有的OpenGL平台上运行

V/

43

2.5.5相函数

•OpenGL助(GLAUX)

■部分函数提供窗口管理、入出理以及制一些

三物体

■包含30个函数,函数名前一律是“aux”

Windows平台上

♦文件“GLAUX.H”

♦文件“GLAUX.LIB”

♦接“GLAUX.DLL”

OpenGL中的助不能在所有的OpenGL平台上运行

V/

44

2.5.5相函数

•OpenGL工具(GLUT)

由MarkKilgard

部分函数主要提供基于窗口的工具,以及一些制

物体的函数

包含大30多个函数,函数名前“glut”

■文件

♦文件“GLUT.H”

♦文件“GLUT32.LIB”

♦接“GLUT32.DLL”

ghlt中的窗口管理函数不依于运行境的,可以在所

有的OpenGL平台上运行

V/

45

2.5.5相函数

•WGL:OpenGL窗口系的展

■于各窗口系,OpenGL都提供了一个展

于Windows系,OpenGL提供WGL

♦并不是所有的函数前都是“wgl”

•用于接OpenGL和Windows,在Windows平台上置

OpenGL境

♦文件、文件和接都和WindowsGDI一,由Windows

底提供,文件是“WINGDLH”

♦只能在Windows平台上运行

V/

46

2.5.5相函数

•OpenGL程序中,常用的函数合

GL+GLU+GLUT(跨平台)

♦窗口控制GLUT,采用GLUT的消息、理机制

♦形制GL+GLU+GLUT中的制函数

GL+GLU+WGL(限于Windows程序)

♦窗口控制WGL,采用Windows的消息理机制

♦形制GL+GLU+WGL中的制函数

•入段,最好是使用GLUT

•写高的Windows相的制程序,最好使用WGL

V/

47

2.5.5相函数

・函数的使用方式

■包含各个的文件

♦程序中直接声明include“*.h”

■引用各个的文件

♦在工具的工程置中加入的引用

将各个的接放在系目下或者是程序的运行

目下

♦(于Windows2000来是“WINNT\System32”目)

令(于WindowsXP来是“Widows\System32,9目)

V/

48

I

m

OpenGL程序-GLUT

•GL运行接

WindowsNT3.5和Windows98自

•程境(Windows):VC6.0

•GLUT

文件:glut.hto$(MSDevDir)\..\..\VC98\include\GL

接:glut32.1ibto$(MSDevDir)\..\..\VC98\lib

运行:glut32.dllto%WinDir%\System

V/

50

文件

•OpenGL和GLU(Windows版)

#include<windows.h>(必在前面)

#include<GL/gl.h>

#include<GL/glu.h>

•使用GLUT

#mclude<GL/glut.h>(不需要以上的3个文件)

•一般要使用下列几个文件

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

y

51

回函数八

•示回函数(displaycallback):mydisplay

每个GLUT程序都必有一个示回函数(制形)

用ghitDisplayFunc(mydisplay)函数注册

只要OpenGL确定示内容要被刷新,示回函数就会被用:例

如,当窗口被打的候、窗口大小改

•回函数的注册与使用

注册函数原型:

♦RegisterFunc(Type(*func)(ParameterList))

♦Type定了回函数的返回型

♦ParameterList定了回函数的参数列表

注册函数的回函数原型:

♦Typefunc(ParameterList)

I_______)

52

回函数

•常用的GLUT回函数

示(Display):voidglutDisplayFunc(void(*func)

(void))

窗口生改(Reshape):voidglutReshapeFunc(void

(*func)(intwidth,intheight))

(Keyboard):voidglutKeyboardFunc(void(*func)

(unsignedintkey,intx,inty))

鼠(Mouse):voidglutMouseFunc(void(*func)(int

button,intstate,intx,inty))

鼠按并移(Motion)[拖]:voidglutMotionFunc

(void(*func)(intx,inty))

:后台理:voidglutldleFunc(void(*func)(void))y

53

其它常用函数

•窗口背景的色:

置色:glClearColor3f(0.0,0,0)

清除存glClear(GL_COLOR_BUFFER_BIT)

•事件循函数:glutMainLoop

main函数是程序入,事件循做束

建的窗口和示的形被激活

程序入鼠或等入的无循中

•元生成函数

glBegin(元型);°glEndQ;

元型:GL_POINTS;GL_POLYGON;

GL_LINES;GL_TRIANGLE...

y

54

simple.cppyE常

•大量使用状量的默

■(正投影和透投影)

■色(窗口背景、元)

■窗口参数(位置和大小)

•以后的程序将改一些默

V/

55

如何VC6

•建一个Win32consoleapplication型的

workspace文件

•建一个C/C++文件,包含前面的代,并把

个文件插入到workspace文件中

•入菜Project□Settings...9Link,在

Object/librarymodules文本框中加上opengl32.lib

glu32.1ibglut32.1ib,注意用空格分

v/

56

改的彳列子:example.cpp

int吗ain(intwr*char**are、:

glutlnit(&argc,argv);

glutInitDisplayMode(GLUTDOUBLE|GLUTRGB);

建窗口及初始化操作

glutlnitWindowSize(250,250);

glutlnitWindowPosition(100,100);

glutCreateWindow("hello)

init();<初始化OpenGL自身内容

glutDispIayFunc(dispIay);

glutKeyboardFunc(keyboard);注册各个回函数

glutMouseFunc(mouse);

遇lutRes^gpeFunc(Reshape);

glutMainLoop();◄-------------入程序主循

return0;y

57

改的彳列子:example.cpp

•init函数

初始化OpenGL自身

voidinit(void)

(

glClearColor(0.0,0.0,0.0,0.0);

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0,250.0,0.0,250.0);

V7

58

改的彳列子:example.cpp

•制一条段

voiddisplay(void)

(

glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0,0.0,0.0);

glBegin(GL_LINE);

glVertexli(180,15);

glVertexli(10,130);

glEnd();

glutSwapBuffers();

v})

59

改的彳列子:example.cpp

•消息回函数

■当按下“ESC"程序退出

voidkeyboard(unsignedcharkey,intx,inty)

(

switch(key){

case27:

exit(O);

break;

V/

60

改的彳列子:example.cpp

•鼠消息回函数

■当点鼠左程序退出

voidmouse(intbutton,intstate,intx,inty)

(

switch(button){

caseGLUT_LEFT_BUTTON:

exit(O);

break;

y

61

改的彳列子:example.cpp

•改窗口大小

当程序后或改窗口大小

voidReshape(intwidth,intheight)

(

glViewport(0,0,width,height);

glMatrixMode(GL_PROJECTION);

glLoadldentity();

//gluOrtho2D(0.0,width,0.0,height);

gluOrtho2D(-width/2,width/2,-height/2,height/2);

::glMatrixMode(GL_MODELVIEW);

::glLoadldentity();

•所有使用GLUT的OpenGL程序的模式都与本

例相似

main函数,初始化OpenGL境,用init,注册

各个回函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论