OPENGL中文教程OPENGL-3-視口和繪制函數(shù)_第1頁
OPENGL中文教程OPENGL-3-視口和繪制函數(shù)_第2頁
OPENGL中文教程OPENGL-3-視口和繪制函數(shù)_第3頁
OPENGL中文教程OPENGL-3-視口和繪制函數(shù)_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、.2、設(shè)置視口和重載你的繪制函數(shù)NeHe SDK是把Nehe的教程中所介紹的所有功能,以面向?qū)ο蟮男问?,提供給編程人員快速開發(fā)的一套編程接口。在下面的教程中,我將按NeHe SDK源碼的功能分類,一步一步把這套api介紹給大家。如果你覺得有更好的學(xué)習(xí)方法,或者有其他有益的建議,請聯(lián)系我。zhouwei02,zhouwei506程序結(jié)構(gòu):我們在第一課程序的基礎(chǔ)上添加一下功能:1. 創(chuàng)建一個全局的視口類,控制場景中可見的范圍 2. 創(chuàng)建初始化函數(shù),用來完成繪制的初始化工作 3. 創(chuàng)建一個繪制三棱錐的函數(shù) 4. 設(shè)置默認(rèn)的視口棱臺體 5. 重栽我們的繪制函數(shù),這里將繪制一個簡單的三棱錐 為了使用視口

2、類,我們需要包含下面的頭文件(view.h),并聲明一個全局的視口變量view。/*新增的代碼:包含視口類的聲明*/#include "view.h"/ 包含視口類的聲明/*新增的代碼:包含視口類的聲明:結(jié)束*/*新增的代碼:創(chuàng)建View類*/Viewview;/ 創(chuàng)建視口類/*新增的代碼:創(chuàng)建View類:結(jié)束*/接著創(chuàng)建一個新的cpp文件,用來重栽我們的繪制函數(shù)。這里我把它命名為Draw.cpp為了使用OpenGL類和View類,我們需要包含頭文件opengl.h和view.h。為了方便起見,我們啟用NeHe名字空間。接著我們使用extern關(guān)鍵字來使用全局變量view,

3、最后我們創(chuàng)建一個變量initialize來記錄是否需要初始化。整個代碼如下:#include "opengl.h"/ 包含創(chuàng)建OpenGL程序的框架類#include "view.h"/ 包含視口類的聲明#pragma comment( lib, "NeheSDK.lib" )/ 包含NeheSDK.lib庫using namespace NeHe;/ 使用NeHe名字空間extern View view;/ 使用全局變量view類static bool initialize = true;/ 記錄是否初始化2、設(shè)置初始化函數(shù)這里我創(chuàng)

4、建一個空的初始化函數(shù),以方便以后的使用/*初始化場景*/void IniScene(OpenGL* gl, ControlData* cont)/*初始化場景:結(jié)束*/3、創(chuàng)建一個繪制三棱錐的函數(shù)我們使用標(biāo)準(zhǔn)的OpenGL代碼創(chuàng)建這個函數(shù)/*繪制三棱錐*/ 繪制三棱錐void DrawTri(void)glBegin(GL_TRIANGLES);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f,-1.0f, 1.0f);glColor3f(0.0f

5、,0.0f,1.0f);glVertex3f( 1.0f,-1.0f, 1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.0f,-1.0f, 1.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f( 1.0f,-1.0f, -1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f);glVerte

6、x3f( 1.0f,-1.0f, -1.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f,-1.0f, -1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(-1.0f,-1.0f,-1.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f,-1.0f, 1.0f);glEnd();/*繪制三棱錐:結(jié)束*/4、設(shè)置默認(rèn)視口棱臺體默認(rèn)的視口棱臺體的范圍是,視角45度,近

7、切面距離視點0.1,遠(yuǎn)切面距離視點100。默認(rèn)在z=0的平面上的可見范圍是,Y軸方向(-2,+2),X軸方向(-2,+2)*寬高比寬高比由窗口大小決定,如果窗口大小為800x600,則寬高比為4/3,X軸的可見范圍是(-2.67,+2.67)代碼如下:/*設(shè)置默認(rèn)視口棱臺體*/void SetDefaultView()view.Reset();/ 重置視口view.LookAt(Vector(0,0,5),Vector(0,0,0),Vector(0,1,0);/ 設(shè)定視口在(0,0,5),朝向-Z軸,上方向量為Y軸/*設(shè)置默認(rèn)視口棱臺體:結(jié)束*/5、繪制場景在這個例子里我們通過繪制一個三角形來說明這個函數(shù)。它完成一下的功能 :1. 初始化場景 2. 設(shè)置默認(rèn)的視口棱臺體 3. 調(diào)用自定義的繪制函數(shù) 代碼如下:/*繪制場景*/void DrawScene(OpenGL *gl,ControlData *cont)/ 初始化if(initialize)IniS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論