版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
高級(jí)計(jì)算機(jī)圖形學(xué)
講授:董蘭芳
研究方向:科學(xué)計(jì)算可視化
圖形、圖像處理
模式識(shí)別
Telephone/p>
Email:Ifdong@ustc.
Homepage:
http://staff.ustc.edu,dong
中國科學(xué)技術(shù)大學(xué)
視覺計(jì)算與可視化實(shí)驗(yàn)室
第二章圖形學(xué)編程
?2.1OpenGL簡介
?2.2Siepinski鏤墊
?2.3編寫二維圖形應(yīng)用程序
?2.4OpenGLAPI
?2.5圖元和屬性
?2.6顏色
?2.7觀察
?2.8控制函數(shù)
?2.9Siepinski鏤墊繪制程序
?2.10多邊形和遞歸
?2.11三維Siepinski鏤墊
?2.12繪制隱函數(shù)曲線
?2.13基于三角網(wǎng)格的等值線繪制
2.1OpenGL簡介
?三種類型的計(jì)算機(jī)圖形軟件系統(tǒng):
>用某種語言寫成的子程序包
/GKS
/PHIGS
/GL
/OpenGL
/DirectX
便于移植和推廣、但執(zhí)行速度相對(duì)較慢,效率低!
>擴(kuò)充計(jì)算機(jī)語言,使其具有圖形生成和處理的功能
如:TurboPascal>TurboC,AutoLisp等。
簡練、緊湊、執(zhí)行速度快,但不可移植!
A專用圖形系統(tǒng):效率高,但系統(tǒng)開發(fā)量大,可移植
2.1OpenGL簡介
>專用圖形系統(tǒng):效率高,但系統(tǒng)開發(fā)量大,可移植性差。
工具欄
快捷菜單欄
主菜單欄
|業(yè)1)?,歹a7.0.1:.\imtitled廠〕值I區(qū)〕|
FileIEdilModifyCr?ot?Di?pl*yVtndowAn>?*taDefor*Sk?l?tonSkinC?n*tr*inCh*r*cl?rX?lp
Hibon二||因一*卜|m*6I*+《N?闿X??砧涌它0.,。|日“笈|西面渭|$5、春濾妾
General|Curve;Si<fac?3|Polygon:Subdrv*|Delormabon|Arwnation|DynamicsIRendering|P?nt£Meets!Toon|Cloth:FluidsIF=|Ha?|Custom:VueGxStreamPlugvi|曰
V?*wSh*4(ncShowPan?laVieSXadin?L><htingShowP*n*l*事事能
Chgnel*Obj?vl
常
用
工
具
(■?Dupka1Rendet
L?y?rsOption?Hvlp
工作區(qū)
2.1OpenGL簡介
?OpenGL(OpenGraphicsLibrary)是個(gè)定義了一個(gè)跨編
程語言、跨平臺(tái)的編程接口的規(guī)格,是個(gè)專業(yè)的3D程序
接口,是一個(gè)功能強(qiáng)大,調(diào)用方便的底層3D圖形庫。
?OpenGL是個(gè)與硬件無關(guān)的軟件接口,可以在不同的平臺(tái)
如Windows95、WindowsNT、Unix>Linux、MacOS
、OS/2之間進(jìn)行移植。
?這個(gè)接口由近二百五十個(gè)不同的函數(shù)調(diào)用組成,用來從簡
單的圖元繪制復(fù)雜的三維景象。在電子游戲工業(yè)里,它是
頗普遍的,而另一種編程接口系統(tǒng)是僅用于Micros。什
Windows上的Directsb。
?OpenGL常用于CAD、虛擬實(shí)境、科學(xué)視覺化程序和電子
游戲開發(fā)。
2.1OpenGL簡介
?OpenGL的前身是SG工公司為其圖形工作站開發(fā)的工R工SGL。
1992年7月,SG工公司發(fā)布了OpenGL的1.0版本。
?OpenGL歷經(jīng)2.0,1.5,1.4,1.3,1.2,1.1,or1.0多個(gè)
版本。現(xiàn)在最新的是在2006年8月3日公布的OpenGLversion
2.1o
?OpenGL規(guī)范由1992年成立的OpenGL架構(gòu)評(píng)審委員會(huì)(ARB
)維護(hù)。ARB由一些特別興趣于建立一個(gè)統(tǒng)一的普遍可用的
AP工的、公司組成。根據(jù)OpenGL官方網(wǎng)站,2002年6月的ARB
投票成員包括3Dlabs、AppleComputer、ATITechnologies
、bellComputer、Evans&Sutherland、Hewlett-Packard
、IBM>IntekMatrox、NVIDIA>SG工和Sun
Microsystems(Microsoft曾是創(chuàng)立成員之一,但已于2003
年3月退出)。贅忌
2.1OpenGL簡介
?GL(1981-2006):SiliconGraphics(SGI)
GeometryEngine(幾何引擎),硬件(VLSI)
實(shí)現(xiàn)幾何流水線,極大改良了圖形工作站。
>立即模式繪制
>可非常簡單地設(shè)計(jì)出三維交互圖形
應(yīng)用程序。
2.1OpenGL簡介
?OpenGL(1992):SG工領(lǐng)導(dǎo)的OpenGLArchitectural
ReviewBoard(OpenGLARB)發(fā)布1.0版平臺(tái)無關(guān)的API:
?易于使用
?與硬件非常貼近,從而可以充分發(fā)揮其性能
>著重在于渲染(rendering)
?沒有提供窗口和輸入接口,從而避免依賴于
具體的窗口系統(tǒng)
2.1OpenGL簡介
?核心庫(GL):基本庫。
?實(shí)用函數(shù)庫(GLU):處理專門操作的附加庫。
(復(fù)雜對(duì)象描述、曲線和曲面的繪制……)
?實(shí)用函數(shù)工具包(GLUT):實(shí)用函數(shù)工具包。
(提供與任意屏幕窗口系統(tǒng)進(jìn)行交互的函數(shù)庫)
2.1OpenGL簡介
?基于QpenGL標(biāo)準(zhǔn)開發(fā)的應(yīng)用程序必須運(yùn)行于32位Windows
平臺(tái)可如WindowsNT或Windows§6環(huán)境;而且運(yùn)行時(shí)逐需有動(dòng)態(tài)
鏈接庫OpenGL32.DLL、Glu32.DLL,一般在...\W:[NDOW5\system32
里面(注:window2000以上系統(tǒng)均帶有OPENGL32.DLL和glu32.dll)
?一般來說,VC6和VS.NET里面就帶有GL的基本庫
>VC6:..AMicrosoftVisualStudio\VC98\Include\GL
>VS.NET.2005:..AMicrosoftVisualStudio
8\VC\PlatformSDK\Inclucle\gl
>一般是Gl股,Slaux.h,Glu.h
>Lib里也有:Open@L32.lib,GLu32』ib,GLaux.lib
?所以開發(fā)者在VC下可以使用
>#include<gl\gl.h>//HeaderFileForTheOpenGL32Library
>#include<gl\glu.h>//HeaderFileForTheGLu32Library
>#include<gl\glaux.h>//HeaderFileForTheGlauxLibrary
2.1OpenGL簡介
LibS0BI
文件。僦⑥查看9收藏他)工具9幫助也);:
D后退,十搜索文件夾叵]▼
地址@)ODAProgramFilesXBicrosoftVisualStudio\VC98\Lib*,|心轉(zhuǎn)到
名稱4大小類型停改日期人
文件和文件夾任務(wù)V[-給EDKGUID.UB4KBObjectFileLib.1998-5-130:00
EDKMAPI.LIB63KBObjectFileLib.1998-5-130:00
其它位置可繪EDKMSG.LIB2KBObjectFileLib.1998-5-130:00
組EDKSETUP.UB93KBObjectFileLib.1998-5-130:00
口VC98^EDKTRACK.UB5KBObjectFiltLib.1998-5-130:00
Q我的文檔"EDKUTHS.UB60KBObjectFileLib.1998-5-130:00
口共享文檔“EXADMINLIB48KBObjectFiltLib.1998-5-130:00
《我的電腦EXCKIHST.UB93KBObjectFileLib.1998-5-130:00
EXCHSDK.UB1,423KBObjtctFil?Lib.1998-5-130:00
母網(wǎng)上郃居
綜FASTFILE.UB6KBObjectFileLib.1998-5-130:00
^FDI.LIB83KBObjectFileLib.1998-5-130:00
詳細(xì)信息多■/^FILTER.LIB10KBObjectFileLib.1998-5-130:00
境FBISTR32.UB4KBObjectFileLib.1998-5-130:00
21FP10.0BJ1KBObjectFile1998-6-170:00
GLU32.LIB
ObjectFileLibrary"FRIENDLY.UB7KBObjectFileLib.1998-5-130:00
修改日期1998年5月13日,“GM32.UB80KBObjectFil*Lib.1998-5-130:00
0:00^OAUX.LIB1,282KBObjectFileLib.1998-5-130:00
大?。?23KB券Clow321ib452KBObj?ctFil*Lib.2010-7-1312:22
“glew32s.lib1,140KBObjectFileLib.2010-7-1312:22
繪ES困回I13KBObjectFiltLib.1998-5-130:00
^Jglut32.1ib80KBObjectFileLib.2004-10-2311:25
線GTRTST32.UB23KBObjectFil*Lib.1998-6-220:00
空GUIDS.IJB98KBObjectFileLib.1998-5-130:00
為GIMAINUB27KBObjectFileLib.1998-5-130:00
^GfPERF.UB4KBObjectPileLib.1998-5-130:00
%GTREPOKr.UB11KBObjectFileLib.1998-5-130:00
幼HEXEDITUB4KBObj?ctFiltLib.1998-5-130:00
為HUNK.UB18KBObjectFileLib..1998-5-130:00
^ICMUI.LIB4KBObjectFiltLib.1998-5-130:00
給IKVUHK.UB323KBObjectFileLib.1998-5-130:00
^liAGEHLP.UB28KBObjectFiltLib.1998-5-130:00
“I1W32.1IB20KBObjectFileLib.1998-5-130:00
^JAVADBG.LIB12KBObjectFileLib.1998-5-130:00
-JKERNEL32.UB172KBObjectFileLib.1998-5-130:00
“KSGUID.UB142KBObjectFileLib.1998-5-130:00
綜LARGEIMT.LIB4KBObjectFil*Lib.1998-5-130:00
^LEBC.LEB864KBObjectFileLib.2004-2-170:00
,^LIBCD.LIB2,544KBObjtctFiltLib.2004-2-170:00
用IJBCD.PDB84KBPrograaDebugD.2004-2-170:00
^LIBCIUB162KBObjtctFil*Lib.1998-8-170:00
^UBCID.IJB389KBObjectFileLib.1998-6-170:00
也LIBCIDPDB76KBProgrsDebugD.1998-6-170:00
^LIBCIMT.UB178KBObjectFileLib...2004-2-170:0040K/s,OK/S0v
夕出“342.ppi0p*nO._Brief_Int...*PFT[■Libt=z/'<7^C>10:38
2.1OpenGL簡介
?函數(shù):
AOpenGL核心庫(gl)
AOpenGL實(shí)用庫(glu)
A對(duì)X窗口系統(tǒng)的OpenGL擴(kuò)展(glX)
?舉例:
>voidglBegin(GLenummode);
>voidgluBeginCurve(GLUnurbs*nurb);
>voidglXFreeContextEXT(bisplay*dpy,
GLXContextctx);
?參數(shù):
GL_PO工NTS,GL_LCNES,GL_LINE_5TR工P,GL_LCNE
_LdOP,GL-TRIANGLES,GL_TRIANGLE_STMP.fl
〒曰!:AN,GL_QUAbStGLj^UAb_STRIP匚/
2.1OpenGL簡介
表3-1
字符c語言類型OpenGL類型定義
bsignedcharGLbyte
sshortGLshorl
iintGLint
ffloatGLlloat,GLclampf
ddoubleGLdouble,GLclampd
ubunsignedcharGLubyte,GLboolean
usunsighedshortGLshorl
uiunsignedintGLuint.GLenuni,GLbitfield
voidGLvoid
?voidglVertex3s(&Lshortx,GLshorty,SLshortz);
?voidglVertex3i(&Lintx,SLinty,GLintz);
?voidglVertex3f(&Lfloatx,SLfloaty,GLfloatz);
?voidglVertex3d(GLdoublex,GLdoubley,GLdoublez);
2.1OpenGL簡介
【第英”?,大陋偏
洲開始||]⑥011LJDebug|[舊MkrosoFtPowerPC..四AcrobatReader-L.J而未命名-畫圖|18MicrosoftVisualC++14:50
2.1OpenGL簡介
Jl
onf\Build/Debug\FindinFiles1~\FindinFiles2~\Results]?||
次英④?,大翹城二|
妻開始爹
113!eJ,91MicrosoftPowerPo...|小AcrobatReaderT,..|$]未命名-畫圖11-MKrosoftVlsu...
2.1OpenGL簡介
.
-I11.exe-0error(s),0vjarning(s)
J
EEKBuildXDebugX_FindinFilesI~\~FindinFiles2"\Results]<||
J秀英,:大理常威廠>r
LnLCol1|REC|COL|OVR|READ
洲開始I痣聞J|S]Microsofl:PoM..|RjAcrobatReade…|W1未命名-畫圖811-Microsoft…|BB"E:\ll\Debugl..IlgBAnExample。...康89窗14:54
2.1OpenGL簡介
?在沒使用GLUT的情況下(手動(dòng)添加link):
>在你文件頭加上
/#include<gl\gl.h>
/#include<gl\glu.h>
/#include<gl\glaux.h>
>進(jìn)入Project菜單,選Settings項(xiàng),彈出Settings
對(duì)話框,選Link項(xiàng),在Libraries欄目中加入
OpenGL庫:opengl32.libglu32.libglaux.lib
2.1OpenGL簡介
?GLUT(OpenGLUtilityToolkit)
?安裝:在windows下通過C/C++語言編寫GLUT程序,你需要以下三個(gè)文件
>&LUT.H-你需要在你的源代碼中包含這個(gè)文件。通常情況下,這個(gè)文
件應(yīng)該放在你系統(tǒng)的包含目錄下的&L文件夾中。
>&LUT.LIB(SGIwindows版本)以及glu+32.lib(微軟版本)-這個(gè)文
件必須被連接到你的程序中,確保它放在LIB目錄中。
>glut32.dll(Windows)和glut.dll(SGIWindows版本)-根據(jù)你所使
用的OpenGL選擇一個(gè),如果你正在使用微軟公司的版本,那么你必須選
擇glut32.dllo你應(yīng)該把DLL放置在你的系統(tǒng)文件夾中。
?舉例:在windowXP下使用VC6安裝GLUT
>下載glutdlls并解壓
>復(fù)制glut32.dll和glut.dll至!!...\windows\system32
>復(fù)制gluT.h到...\MicrosofTVisualStudio\VC98\IncIude
>復(fù)制glut32.lib和glut.lib至(..\MicrosoftVisualStudio\VCSt§\
2.1OpenGL簡介
#include<GL/glut.h>
voidrenderScene(void){〃繪制一個(gè)簡單的二維的三角形
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
gIVertex3f(-0.5,-0.5,0.0);
gIVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
)
voidmain(intargc,char**argv){
glutlnit(&argc,argv);〃初始化glut
glutInitDisplayMode(GLUT_DEPTHIGLUT_SINGLEIGLUT_RGBA);
〃設(shè)置窗口的模式-深度緩存,單緩存,顏色模型
glutInitWindowPosition(100,100);〃設(shè)置窗口的位置
glutInitWindowSize(320,320);〃設(shè)置窗口的大小
glutCreateWindow(“3DTech-GLUTTutorial");〃創(chuàng)建窗口并賦予title
glutDisplayFunc(reiiderScene);〃調(diào)用renderScene把繪制傳送到窗口
ghitMainLoopO;循環(huán)等布
2.1OpenGL簡介
我的電腦超星數(shù)字圖
書館
;3DTech-GLUTTutorial-1□!x|
網(wǎng)上鄰居
回收站
Internet卡
Explorer聯(lián)
flashfxp
UltraEdit
2.1OpenGL簡介
?OpenGL中
>核心(基本)庫的函數(shù)名以gl為前綴
glBegin,glClear,glCopyPixels,
gIPolygonMode
>常量以GL開頭
GL_2b,GL_RGB,GL_CCW,GL_POU/GON,
GL_AMBIENT_ANb_bIFFUSE
>庫中定義的專門的數(shù)據(jù)類型以GL開頭.
GLbyte,GLshort,Glint,GLfloot,GLdouble,
GLboolean
2.1OpenGL簡介
?使用OpenGL的核心庫
#include<windows.h>
#include<GL/gl.h>
#include<GL/glu.h>
?使用窗口管理
#include<GL/glut.h>
?C++程序所需的頭文件
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
2.1OpenGL簡介
#include<GL/glut.h>
voidmydisplay(X
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POLYGON);
gIVertex2f(-0.5,-0.5);
glVertex2f(-0.5,0.5);
gIVertex2f(0.5,0.5);
glVertex2f(0.5,-0.5);
glEnd();
glFlush();
)
intmain(intargc,char**argvX
glutCreateWindow("simple");
glutDisplayFunc(mydisplay);
glutMainLoopO;
)
2.1OpenGL簡介
ionname
dimensions
glVertex3f(x,v,z)
x,y,zarefloats
belonDsstoGLJlibraiy
glVertex3fv(p)
pisapointertoanarray
2.1OpenGL簡介
?OpenGL的狀態(tài)
?OpenGL是一個(gè)狀態(tài)機(jī)(statemachine)狀態(tài):
持續(xù)性參數(shù),顏色、線型、材質(zhì)屬性等
AOpenGL函數(shù)有兩種類型生成圖元(圖元函數(shù),如
gIVertex)如果圖元可見,則被輸出
?頂點(diǎn)如何被處理,圖元的外觀由狀態(tài)控制
>改變狀態(tài)變換函數(shù)
A屬性函數(shù)
2.1OpenGL簡介
?事件循環(huán):在程序中定義
一個(gè)顯示回調(diào)函數(shù),(display
callback),每個(gè)GLUT程序都
必須有一個(gè)顯示回調(diào)函數(shù)。
只要OpenGL確定顯示內(nèi)容要被
刷新時(shí),顯示回調(diào)函數(shù)就會(huì)被
調(diào)用。
?main函數(shù)是以程序進(jìn)入事件
循環(huán)做為結(jié)束
2.1OpenGL簡介
?web:
>OpenGL官方主頁:http://www.opengl.org
>OpenGL2.1Reference:
http:Uwww./sdk/docs/mac
>GLUT:http:Uwww.opengl.org/resources/libraries/glut/
>NEUE的在線GL教程:http://
?specification:
>TheOpenGLUtilityToolkit(GLUT)Programming
Interface(PDF)
>OpenGL2.1specification(PDF)
?book:
AOpenGL超級(jí)寶典(三版)(中文),人民郵電出版社
AOpenGL編程指南(四版)(中文),人民郵電出版社
>OpenGLShadingLanguage
第二章圖形學(xué)編程
?2.1OpenGL簡介
?2.2Siepinski鏤墊
?2.3編寫二維圖形應(yīng)用程序
?2.4OpenGLAPI
?2.5圖元和屬性
?2.6顏色
?2.7觀察
?2.8控制函數(shù)
?2.9Siepinski鏤墊繪制程序
?2.10多邊形和遞歸
?2.11三維Siepinski鏤墊
?2.12繪制隱函數(shù)曲線
?2.13基于三角網(wǎng)格的等值線繪制
22Siepinski鏤墊
?生成過程:定義一個(gè)三角形,三個(gè)頂點(diǎn)分
別為:(Xi,y「O),(x2/y2/O),
(、343,°)
A1.在三角型內(nèi)隨機(jī)選擇一個(gè)初始點(diǎn)
(x,y,z)
A2.隨機(jī)選擇三個(gè)頂點(diǎn)之一。
A3.找出(x,y,z)和隨機(jī)選擇
的頂點(diǎn)這二者連線的中點(diǎn)。
A4.顯示此點(diǎn)。
A5.用這個(gè)點(diǎn)代替(x,y,z)o
A6.轉(zhuǎn)到步驟2。
第二章圖形學(xué)編程
?2.1OpenGL簡介
?2.2Siepinski鏤墊
?2.3編寫二維圖形應(yīng)用程序
?2.4OpenGLAPI
?2.5圖元和屬性
?2.6顏色
?2.7觀察
?2.8控制函數(shù)
?2.9Siepinski鏤墊繪制程序
?2.10多邊形和遞歸
?2.11三維Siepinski鏤墊
?2.12繪制隱函數(shù)曲線
?2.13基于三角網(wǎng)格的等值線繪制
⑥2.3編寫二維圖形應(yīng)用程序
/*Two-bimensionalSierpinskiGasket*/
/*GeneratedUsingRandomlySelectedVertices*/
/*AndBisection*/
#ifdef_APPLE_
#include<GLUT/glut.h>
#else
#include<GL/glut.h>
#endif
voidmyinit()
(
/*attributes*/
glClearColor(1.01.0,1.0,1.0);/*whitebackground*/
glColor3f(1.6,0.,0,0.0);/*drawinred*/
/*setupviewing*/
/*500x500windowwithoriginlowerleft*/
glMatrixMode(GL_PROJECTION);
glLoadldentityO;
glu0rtho2b(0.0,50.0,0.0,50.0);
glMatrixMode(GL_MObELVIEW);
)
.3編寫二維圖形應(yīng)用程序
void)
{GLfloatvertices[3][2]={{0.0,0.0},{25.0,50.0},{50.0,0.0}};/*任iangle*/
intj,k;
intrand();/*standardrandomnumbergenerator*/
GLfloatp[2]={7.5,5.0);/*Anarbitraryinitialpointinsidetraingle*/
glClear(GL_COLOR_BUFFER_BIT);/*clearthewindow*/
/*computeandplots5000newpoints*/
for(k=0;k<5000;k++)
{
j=rand()%3;/*pickavertexatrandom*/
/*Computepointhalfwaybetweenselectedvertexandoldpoint*/
p[0]=(p[0]+vertices[j][0])/2.0;
p[l]=(p[l]+vertices[j][l])/2.0;
/*plotnewpoint*/
glVertex2fv(p);
)
glEnd();
glFlush();/*clearbuffers*/
)
.2.3編寫二維圖形應(yīng)用程序
voidmain(intargc,char**argv)
(
/*StandardGLUTinitialization*/
glut工nit(&argc,argv);
glutlnitbisplayMode(GLUT_SINGLE|GLUT_RGB);
/*default,notneeded*/
glut工nitWindowSize(500,500);/*500x500pixelwindow*/
glut工nitWindowPosition(0,0);/*placewindowtopleftondisplay*/
glutCreateWindow("SierpinskiGasket");/*windowtitle*/
glutbisplayFunc(display);/*displaycallbackinvokedwhenwindow
opened*/A
myinit();/*setattributes*/AA
glutMainLoopO;/*entereventloop*/陶A,
⑥3編寫二維圖形學(xué)的應(yīng)用程序
第二章圖形學(xué)編程
?2.1OpenGL簡介
?2.2Siepinski鏤墊
?2.3編寫二維圖形應(yīng)用程序
?2.4OpenGLAPI
?2.5圖元和屬性
?2.6顏色
?2.7觀察
?2.8控制函數(shù)
?2.9Siepinski鏤墊繪制程序
?2.10多邊形和遞歸
?2.11三維Siepinski鏤墊
?2.12繪制隱函數(shù)曲線
?2.13基于三角網(wǎng)格的等值線繪制
2.4OpenGLAPI
?AP工的分類
?定義圖元
>改變機(jī)器內(nèi)部的狀態(tài)或者返回狀態(tài)信息
2.4OpenGLAPI
?OpenGL接口
GLU
GLX
2.4OpenGLAPI
?圖形函數(shù):7類API
A圖元函數(shù)
FunctioncallsOutput
/線段UserAGraphics-AInput/Output
program<system._________devices
/多邊形DataInput
A屬性函數(shù)
A視圖函數(shù)(或觀察函數(shù))
A變換函數(shù)
A控制函數(shù)
A查詢函數(shù)
?輸入及窗口函數(shù)(GLUT)
第二章圖形學(xué)編程
?2.1OpenGL簡介
?2.2Siepinski鏤墊
?2.3編寫二維圖形應(yīng)用程序
?2.4OpenGLAPI
?2.5圖元和屬性
?2.6顏色
?2.7觀察
?2.8控制函數(shù)
?2.9Siepinski鏤墊繪制程序
?2.10多邊形和遞歸
?2.11三維Siepinski鏤墊
?2.12繪制隱函數(shù)曲線
?2.13基于三角網(wǎng)格的等值線繪制
2.5圖元和屬性
?OpenGL支持兩類圖元
?幾何圖元:點(diǎn)、線段、多邊形、曲線和曲面
?圖像
GeometricPipeline
Transform?Clip?Project
OpenGL
Frame
applicationAPixeloperations
buffer
program
PixelPipeline
2.5圖元和屬性
?點(diǎn)和線段的類型
GLPOINTSGLLINESGL_LINE_STRIPGL_LINE_LOOP
2.5圖元和屬性
?多邊形的基本概念
?多邊形被正確顯示:多邊形是簡單的、
凸的和平面的。
?-二;二
3一二,
2.5圖元和屬性
?多邊形的基本概念
2.5圖元和屬性
?OpenGL中多邊形類型
p2P2P2P2
Pi.?.P3PiP3PiP3PiP3
Pot也PoP4PoP4PoP4
叩
P7*?5P7P5P7P5P7P5
P6P6P6P6
GLPOINTSGL_POLYGONGL_QUADSGLJRIANGLES
PiP3P5P7
PoP2P4P6
GL_TRIANGLE_$TRIPGL_QUAD_STRIP
2.5圖元和屬性
?利用多邊形近似球面
x(0,①)二sin0cos①
y(6,①j二cos6cos①
z(0,①,二sin①
2.5圖元和屬性
?利用多邊形近似球面
for(phi=-80;phi<=80;phi+=20)
{phir=c*(phi+20);
phir20=c*(phi+20);
glBegin(GL_QUAD_STRIP);
For(theta=-180.0;theta<=180;theta+=20)
{thetar=c*theta;
X=sin(thetar)*cos(phir);
Y=cos(thetar)*(phir);
Z=sin(phir);
glVertex3d(x,y,z);
X=sin(thetar)*cos(phir20);
Y=cos(thetar)*cos(phir20);
Z=sin(phir20);
gIVertex3d(x,y,z)}
glEnd;}
2.5圖元和屬性
?利用多邊形近似球面(續(xù))
glBegin(GL_TR工ANGLE_FAN);
gIVertex3d(0.0,0.0,1.0);
c=M_PI/180;
c80=c*80;
z=sin(c80);
For(theta=-180.0;theta<=180;theta+=20)
{thetar=c*theta;
X=sin(thetar)*cos(c80);
Y=cos(thetar)*cos(c80);
glVertex3d(x,y,z);
)
glEndQ;
2.5圖元和屬性
?利用多邊形近似球面(續(xù))
glBegin(GL_TRIANGLE_FAN);
gIVertex3d(0.0,0.0,-1.0);
z=-s
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度汽車售后服務(wù)網(wǎng)點(diǎn)加盟與合作合同3篇
- 2025年度內(nèi)墻涂料產(chǎn)品性能測試與改進(jìn)合同3篇
- 2025年度公司管理人員薪酬福利與聘用合同3篇
- 二零二五年度商業(yè)地產(chǎn)租賃合同(含品牌推廣合作)2篇
- 2025年度農(nóng)村土地承包權(quán)土地流轉(zhuǎn)收益分配監(jiān)管合同2篇
- 2025農(nóng)村新建房屋安全責(zé)任與維修保養(yǎng)合同
- 2025養(yǎng)生館合伙人養(yǎng)生館環(huán)保節(jié)能改造合同3篇
- 2025年度酒店前臺(tái)接待及客戶關(guān)系管理合同3篇
- 2025年度土地承包合同未滿征收補(bǔ)償與農(nóng)村土地經(jīng)營權(quán)抵押貸款服務(wù)協(xié)議3篇
- 二零二五年度環(huán)保產(chǎn)業(yè)個(gè)人股份轉(zhuǎn)讓合同3篇
- 初中體育教案【完整版】七年級(jí)
- 2024-2030年中國城市供熱行業(yè)市場前景預(yù)測及發(fā)展趨勢預(yù)判報(bào)告
- 2024年計(jì)算機(jī)二級(jí)MS Office考試題庫500題(含答案)
- 人教版七年級(jí)上冊(cè)《生物》期末試卷(完整)
- 福建中考英語作文15分評(píng)分標(biāo)準(zhǔn)
- 智慧磐石工程建設(shè)方案
- 等保2完整版本.0介紹及建設(shè)流程
- 蘇教版科學(xué)六年級(jí)上冊(cè)期末測試卷含完整答案(各地真題)
- 市場法評(píng)估企業(yè)價(jià)值
- DL-T 1476-2023 電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 通信安全員ABC證報(bào)名考試題庫及答案
評(píng)論
0/150
提交評(píng)論