杭州電子科技大學(xué)《實時三維圖形繪制》OpenGL大作業(yè)實驗報告(共29頁)_第1頁
杭州電子科技大學(xué)《實時三維圖形繪制》OpenGL大作業(yè)實驗報告(共29頁)_第2頁
杭州電子科技大學(xué)《實時三維圖形繪制》OpenGL大作業(yè)實驗報告(共29頁)_第3頁
杭州電子科技大學(xué)《實時三維圖形繪制》OpenGL大作業(yè)實驗報告(共29頁)_第4頁
杭州電子科技大學(xué)《實時三維圖形繪制》OpenGL大作業(yè)實驗報告(共29頁)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上實時三維圖形繪制實驗報告基于粒子系統(tǒng)的雪花場景模擬1、 實驗?zāi)康耐ㄟ^一學(xué)期對實時三維圖形繪制的學(xué)習(xí),在熟練掌握OpenGL理論的前提下,動手實踐,將課本知識轉(zhuǎn)化為實際應(yīng)用。2、 實驗要求編程實現(xiàn)繪制OpenGL場景并可交互式操作,體現(xiàn)課堂所學(xué)內(nèi)容。3、 實驗內(nèi)容1、搭建OpenGL程序框架首先在VS2015中新建項目,在該項目中建立3個主要的類:GLWindow、Keys和GLApplication,其中GLWindow類負(fù)責(zé)窗口屬性的設(shè)置,包括建立、更新、刪除窗口等操作。Keys類負(fù)責(zé)讀取鍵盤的輸入,這樣才能實現(xiàn)交互的要求。GLApplication類負(fù)責(zé)建立我們的

2、應(yīng)用程序,包括初始化、更新、繪制圖形等操作。(1) 窗口類GLWindow的設(shè)計在新建項目中添加類GLWindow,它包括程序主窗口的屬性,以及建立、改變和刪除窗口的方法(具體程序見代碼)。/* windows窗口類 */class GLWindowpublic:/* 構(gòu)造函數(shù) */GLWindow();/* 創(chuàng)建windows窗口 */boolCreate(const char * window_title, const char * class_name, bool fullscreen,HINSTANCE h_instance, LPVOID lpParam);/* 刪除OpenGL窗口

3、 */voidDestroy();/* 改變窗口的顯示設(shè)置 */boolChangeScreenSetting();/* 當(dāng)窗口大小改變時,通知OpenGL調(diào)整大小 */voidReshapeGL();/* Swap Buffers (Double Buffering) */voidSwapBuffers() :SwapBuffers(m_hDC); /* 設(shè)置窗口左上角的位置 */voidSetPosX(int x);voidSetPosX(unsigned short x) SetPosX(signed short)x); voidSetPosY(int y);voidSetPosY(un

4、signed short y) SetPosY(signed short)y); /* 返回窗口的大小 */intGetWidth();intGetHeight();/* 設(shè)置窗口的大小 */voidSetWidth(int width);voidSetHeight(int height);/* 返回窗口左上角的位置 */intGetPosX();intGetPosY();/* 設(shè)置窗口的顏色位深 */voidSetHiColor() m_BitsPerPixel = 16; voidSetTrueColor() m_BitsPerPixel = 32; /* 重載運算符,可以讓GL_Wind

5、ow m_Window聲明后的m_Window作為窗口句柄使用 */operator HWND() return m_hWnd; private:HWNDm_hWnd;/*< 窗口句柄 */HDCm_hDC;/*< 設(shè)備描述表 */HGLRCm_hRC;/*< OpenGL渲染描述表 */intm_WindowPosX;/*< 窗口的左上角的X位置 */intm_WindowPosY;/*< 窗口的左上角的Y位置 */intm_WindowWidth;/*< 窗口的寬度 */intm_WindowHeight;/*< 窗口的高度 */intm_Scre

6、enWidth; /*< 全屏的寬度 */intm_ScreenHeight; /*< 全屏的高度 */intm_BitsPerPixel;/*< 顏色位深 */bool m_IsFullScreen; /*< 是否全屏 */;(2) 鍵盤類Keys的設(shè)計定義鍵盤類Keys對我們的按鍵信息進(jìn)行記錄,用于程序達(dá)到交互的目的。/* 定義鍵盤類 */class Keys public:/* 構(gòu)造函數(shù) */Keys() Clear(); /* 清空所有的按鍵信息 */void Clear() ZeroMemory(&m_KeyDown, sizeof(m_KeyDown

7、); /* 判斷某個鍵是否按下 */bool IsPressed(unsigned int key) return (key < MAX_KEYS) ? (m_KeyDownkey = true) : false; /* 設(shè)置某個鍵被按下 */void SetPressed(unsigned int key) if (key < MAX_KEYS) m_KeyDownkey = true; /* 設(shè)置某個鍵被釋放 */void SetReleased(unsigned int key) if (key < MAX_KEYS) m_KeyDownkey = false; pri

8、vate:static const unsigned int MAX_KEYS = 256;bool m_KeyDownMAX_KEYS; /*< 保存256個按鍵的狀態(tài) */;(3) 應(yīng)用程序類GLApplication的設(shè)計類GLApplication為我們的應(yīng)用程序提供統(tǒng)一的接口,當(dāng)我們實現(xiàn)不同的程序時不用再從頭開始,只要實現(xiàn)其對應(yīng)的接口方法即可。/* 基本的程序類,繼承它用來創(chuàng)建OpenGL程序 */class GLApplicationpublic:/* 創(chuàng)建一個全局的Create函數(shù),這個函數(shù)必須被繼承類實現(xiàn) */static GLApplication * Create(c

9、onst char * class_name);/*< 創(chuàng)建你自己的子類 */* 虛析構(gòu)函數(shù) */virtual GLApplication() ;protected:/* 下面的函數(shù)必須被繼承類實現(xiàn),完成基本的OpenGL渲染過程 */virtual boolInit() = 0;/*< OpenGL的初始化 */ virtual voidUninit() = 0;/*< OpenGL的卸載 */virtual voidUpdate(DWORD milliseconds) = 0; /*< 執(zhí)行OpenGL程序的更新 */virtual voidDraw() = 0;

10、 /*< 繪制OpenGL場景 */* 通用的函數(shù) */voidToggleFullscreen(); /*< 切換 全屏/窗口模式 */voidTerminateApplication(); /*< 結(jié)束程序 */voidResizeDraw(bool enable) m_ResizeDraw = enable; /*< 設(shè)置在窗口改變大小的時候,可以繪制 */Keysm_Keys; /*< 按鍵類 */* 構(gòu)造函數(shù) */GLApplication(const char * class_name);private:/* 程序的主循環(huán) */friend int W

11、INAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);intMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);/* 消息處理回調(diào)函數(shù) */friend LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);LRESULTMessage(HWND hWn

12、d, UINT uMsg, WPARAM wParam, LPARAM lParam);static const UINT WM_TOGGLEFULLSCREEN = (WM_USER + 1);/*< 自定義消息,在切換窗口模式的時候發(fā)送 */GLWindowm_Window;/*< Window類 */const char* m_ClassName;/*< 程序名 */boolm_IsProgramLooping;/*< 程序循環(huán)標(biāo)記,如果為false,則退出程序 */bool m_CreateFullScreen; /*< 若為true,則創(chuàng)建全屏模式 */

13、boolm_IsVisible;/*< 窗口是否可見 */boolm_ResizeDraw;/*< 是否在改變大小時,調(diào)用了繪制函數(shù) */DWORD m_LastTickCount; /*< 上一次計時器的值 */;2、 紋理貼圖(1)BMP位圖文件的載入BMP格式是windows采用的常見的圖像文件存儲格式。定義位圖類CBMPLoader,實現(xiàn)位圖文件的載入。/* 位圖載入類 */class CBMPLoader public: CBMPLoader(); CBMPLoader(); bool LoadBitmap(const char *filename); /*<

14、 裝載一個bmp文件 */ void FreeImage(); /*< 釋放圖像數(shù)據(jù) */ bool Load(const char* fileName); /*< 載入位圖并創(chuàng)建紋理 */ unsigned int ID; /*< 生成紋理的ID號 */ int imageWidth; /*< 圖像寬度 */ int imageHeight; /*< 圖像高度 */ unsigned char *image; /*< 指向圖像數(shù)據(jù)的指針 */;(2) 繪制場景并紋理貼圖繪制正方體和球體,并貼圖。/* 繪制球體 */void SnowDemo:DrawSph

15、ere()glPushMatrix();glTranslatef(3.0f, 0.0f, -10.0f);glRotatef(rot, 1.0f, 1.0f, 1.0f);/* 指定紋理 */glBindTexture(GL_TEXTURE_2D, texture2.ID);GLUquadricObj * sphere = gluNewQuadric();gluQuadricOrientation(sphere, GLU_OUTSIDE);gluQuadricNormals(sphere, GLU_SMOOTH);gluQuadricTexture(sphere, GL_TRUE);gluSp

16、here(sphere, 2.5, 50, 50);gluDeleteQuadric(sphere);glPopMatrix();/* 繪制立方體 */void SnowDemo:DrawBox()/* 設(shè)置材質(zhì)屬性 */GLfloat mat_ambient = 0.8f, 0.8f, 0.8f, 1.0f ;GLfloat mat_diffuse = 0.8f, 0.8f, 0.8f, 1.0f ;glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);g

17、lPushMatrix();glTranslatef(-5.0f, 0.0f, -10.0f);glRotatef(rot, 1.0f, 1.0f, 0.0f);/* 繪制六個面 */ 前側(cè)面glBindTexture(GL_TEXTURE_2D, texture0.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 0.0f, 1.0f); /*< 指定法線指向觀察者 */glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(2

18、.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(-2.0f, 2.0f, 2.0f);glEnd();/ 后側(cè)面glBindTexture(GL_TEXTURE_2D, texture1.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 0.0f, -1.0f);/*< 指定法線背向觀察者 */glTexCoord2f(1.0f, 0.0f); glVertex3f(-2.0f, -2.0f

19、, -2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(2.0f, -2.0f, -2.0f);glEnd();/ 頂面glBindTexture(GL_TEXTURE_2D, texture2.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 1.0f, 0.0f);/*< 指定法線向上 */glTe

20、xCoord2f(0.0f, 1.0f); glVertex3f(-2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0f, 2.0f, 2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, -2.0f);glEnd();/ 底面glBindTexture(GL_TEXTURE_2D, texture3.ID);glBegin(GL_QUADS);glNormal

21、3f(0.0f, -1.0f, 0.0f);/*< 指定法線朝下 */glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0f, -2.0f, -2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0f, -2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(-2.0f, -2.0f, 2.0f);glEnd();/ 右側(cè)面glBindTexture(GL_TEXT

22、URE_2D, texture4.ID);glBegin(GL_QUADS);glNormal3f(1.0f, 0.0f, 0.0f);/*< 指定法線朝右 */glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0f, -2.0f, -2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(2.0f, -2.0f

23、, 2.0f);glEnd();/ 左側(cè)面glBindTexture(GL_TEXTURE_2D, texture5.ID);glBegin(GL_QUADS);glNormal3f(-1.0f, 0.0f, 0.0f);/*< 指定法線朝左 */glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0f, -2.0f, -2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(-2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0f, 2.0f, 2.0f);gl

24、TexCoord2f(0.0f, 1.0f); glVertex3f(-2.0f, 2.0f, -2.0f);glEnd();glPopMatrix();3、 位圖字體(1)位圖字體類顯示位圖字體需要用到OpenGL顯示列表和繪制位圖字符的相關(guān)知識。定義字體類GLFont./* 定義字體類 */class GLFontpublic: /* 構(gòu)造函數(shù)和析構(gòu)函數(shù) */GLFont();GLFont(); /成員方法bool InitFont(); /*< 初始化字體 */void PrintText(char *string, float x, float y); /*< 在(x,y)

25、處輸出string內(nèi)容 */protected:HFONT m_hFont; /*< 字體句柄 */;4、 粒子系統(tǒng)設(shè)計(1) 粒子的結(jié)構(gòu)粒子的結(jié)構(gòu)定義了粒子的位置、速度、加速度、生命時間值、消失掉速度、尺寸以及顏色等信息。在定義這個結(jié)構(gòu)后我們就可以在具體程序中對這些值進(jìn)行設(shè)置、更新等操作。/* 粒子結(jié)構(gòu) */struct ParticleVector3 position; /*< 粒子的位置 */Vector3 velocity; /*< 粒子的速度 */Vector3 acceleration; /*< 粒子的加速度 */float lifetime; /*<

26、 粒子生命值 */float dec; /*< 粒子消失的速度 */float size; /*< 粒子尺寸 */float color3; /*< 粒子的顏色 */;(2) 粒子類在粒子系統(tǒng)類中封裝一些共有屬性和操作,包括粒子的數(shù)目,初始化函數(shù)、更新函數(shù)等。這樣對于具體的粒子系統(tǒng)就可以從該類中繼承,重載實現(xiàn)這些接口,就可以創(chuàng)造出不同的實際效果。/* 粒子類 */class CParticlepublic:CParticle(); /*< 構(gòu)造函數(shù) */virtual CParticle(); /*< 析構(gòu)函數(shù) */* 粒子的初始化 */virtual bool

27、Init(int _num);/* 粒子的渲染 */virtual void Render() = 0;/* 粒子的更新 */virtual void Update() = 0;protected:int m_iNum; /*< 粒子總數(shù)目 */Particle* m_pList; /*< 粒子指針 */;(3) 粒子系統(tǒng)模擬雪花由粒子系統(tǒng)類CParticle派生雪花類。/* 雪花渲染類 */class CSnow : public CParticlepublic:CSnow() ;CSnow() ;boolInit(int num ); /* 初始化過程 */voidRender

28、(); /*< 渲染過程 */voidUpdate(); /*< 更新過程 */private:CBMPLoader m_texture; /*< 粒子的紋理 */; 4、 實驗結(jié)果本次實驗主要繪制了一個雪花粒子場景,其中有正方體和球體,還有飛舞的變色文字。通過按住空格鍵來實現(xiàn)正方體和球體的旋轉(zhuǎn),按F1鍵來實現(xiàn)半透明場景的展現(xiàn)。(1)主程序/* 從GL_Application派生出一個子類 */class SnowDemo : GLApplicationpublic:boolInit();/*< 執(zhí)行所有的初始化工作 */voidUninit();/*< 執(zhí)行所有

29、的卸載工作 */voidUpdate(DWORD milliseconds);/*< 執(zhí)行所有的更新操作 */voidDraw();/*< 執(zhí)行所有的繪制操作 */bool LoadTexture(); /*< 載入紋理 */void DrawSphere(); /*< 繪制球體 */void DrawBox(); /*< 繪制正方體 */private:friend class GLApplication;/*< 父類為它的一個友元類 */SnowDemo(const char * class_name); /*< 構(gòu)造函數(shù) */* 用戶自定義的程序

30、變量 */ CSnow m_Snow; /*< 雪花實例 */GLFont m_Font; /*< 字體類 */CBMPLoader texture6; /*< 位圖載入類 */CBMPLoader texture2; /*< 位圖載入類 */float rot; /*< 用于旋轉(zhuǎn)物體 */float cnt1; /*< 字體移動計數(shù)器1 */float cnt2; /*< 字體移動計數(shù)器2 */;/* 創(chuàng)建一個程序的實例 */GLApplication * GLApplication:Create(const char * class_name)Sn

31、owDemo * demo = new SnowDemo(class_name);return reinterpret_cast<GLApplication *>(demo);/* 構(gòu)造函數(shù) */SnowDemo:SnowDemo(const char * class_name) : GLApplication(class_name) / 初始化用戶自定義的程序變量rot = 0.0;cnt1 = 0.0;cnt2 = 0.0; bool SnowDemo:LoadTexture()/* 載入位圖文件 */if (!texture0.Load("image1.bmp&qu

32、ot;) | !texture1.Load("image2.bmp") | !texture2.Load("image3.bmp") | !texture3.Load("image4.bmp") | !texture4.Load("image5.bmp") | !texture5.Load("image6.bmp") /*< 載入位圖文件 */MessageBox(NULL, "裝載位圖文件失敗!", "錯誤", MB_OK); /*< 如果載

33、入失敗則彈出對話框 */return false;if (!texture2.Load("image.bmp")MessageBox(NULL, "裝載位圖文件失敗!", "錯誤", MB_OK);/* 啟用紋理映射 */glEnable(GL_TEXTURE_2D);return true;/* 初始化OpenGL */bool SnowDemo:Init()/* 用戶自定義的初始化過程 */glClearColor(0.0f, 0.0f, 0.0f, 0.5f);glClearDepth(1.0f);glDepthFunc(GL_

34、LEQUAL);glEnable(GL_DEPTH_TEST);glShadeModel(GL_SMOOTH);glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);ResizeDraw(true); /* 載入紋理 */if (!LoadTexture()MessageBox(NULL, "載入紋理失敗!", "錯誤", MB_OK);/* 初始化字體 */if(!m_Font.InitFont()MessageBox(NULL,"初始化字體失敗!","錯誤",MB_

35、OK);/* 初始化雪花實例 */if(!m_Snow.Init(400)MessageBox(NULL,"雪花系統(tǒng)初始化失敗!","錯誤",MB_OK);exit(-1);return true; /* 用戶自定義的卸載函數(shù) */void SnowDemo:Uninit()/* 程序更新函數(shù) */void SnowDemo:Update(DWORD milliseconds)if (m_Keys.IsPressed(VK_ESCAPE) = true)/*< 按ESC退出 */TerminateApplication();if (m_Keys.I

36、sPressed(VK_SPACE) = true) /*< 按空格鍵開始旋轉(zhuǎn) */rot += milliseconds / 20.0;cnt1 += milliseconds / 1500.0; /*< 更新計數(shù)器值 */cnt2 += milliseconds / 1000.0; /*< 更新計數(shù)器值 */* 繪制球體 */void SnowDemo:DrawSphere()glPushMatrix();glTranslatef(3.0f, 0.0f, -10.0f);glRotatef(rot, 1.0f, 1.0f, 1.0f);/* 指定紋理 */glBindTe

37、xture(GL_TEXTURE_2D, texture2.ID);GLUquadricObj * sphere = gluNewQuadric();gluQuadricOrientation(sphere, GLU_OUTSIDE);gluQuadricNormals(sphere, GLU_SMOOTH);gluQuadricTexture(sphere, GL_TRUE);gluSphere(sphere, 2.5, 50, 50);gluDeleteQuadric(sphere);glPopMatrix();/* 繪制立方體 */void SnowDemo:DrawBox()/* 設(shè)置

38、材質(zhì)屬性 */GLfloat mat_ambient = 0.8f, 0.8f, 0.8f, 1.0f ;GLfloat mat_diffuse = 0.8f, 0.8f, 0.8f, 1.0f ;glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);glPushMatrix();glTranslatef(-5.0f, 0.0f, -10.0f);glRotatef(rot, 1.0f, 1.0f, 0.0f);/* 繪制六個面 */ 前側(cè)面glBindTe

39、xture(GL_TEXTURE_2D, texture0.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 0.0f, 1.0f);/*< 指定法線指向觀察者 */glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTexCoord2f(0.0f, 1.0f); glVert

40、ex3f(-2.0f, 2.0f, 2.0f);glEnd();/ 后側(cè)面glBindTexture(GL_TEXTURE_2D, texture1.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 0.0f, -1.0f);/*< 指定法線背向觀察者 */glTexCoord2f(1.0f, 0.0f); glVertex3f(-2.0f, -2.0f, -2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(2.

41、0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(2.0f, -2.0f, -2.0f);glEnd();/ 頂面glBindTexture(GL_TEXTURE_2D, texture2.ID);glBegin(GL_QUADS);glNormal3f(0.0f, 1.0f, 0.0f);/*< 指定法線向上 */glTexCoord2f(0.0f, 1.0f); glVertex3f(-2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(-2.0f, 2.0f, 2.

42、0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, -2.0f);glEnd();/ 底面glBindTexture(GL_TEXTURE_2D, texture3.ID);glBegin(GL_QUADS);glNormal3f(0.0f, -1.0f, 0.0f);/*< 指定法線朝下 */glTexCoord2f(1.0f, 1.0f); glVertex3f(-2.0f, -2.0f, -2.0f);glTexCoor

43、d2f(0.0f, 1.0f); glVertex3f(2.0f, -2.0f, -2.0f);glTexCoord2f(0.0f, 0.0f); glVertex3f(2.0f, -2.0f, 2.0f);glTexCoord2f(1.0f, 0.0f); glVertex3f(-2.0f, -2.0f, 2.0f);glEnd();/ 右側(cè)面glBindTexture(GL_TEXTURE_2D, texture4.ID);glBegin(GL_QUADS);glNormal3f(1.0f, 0.0f, 0.0f);/*< 指定法線朝右 */glTexCoord2f(1.0f, 0.0f); glVertex3f(2.0f, -2.0f, -2.0f);glTexCoord2f(1.0f, 1.0f); glVertex3f(2.0f, 2.0f, -2.0f);glTexCoord2f(0.0f, 1.0f); glVertex3f(2.0f, 2.0f, 2.0f);glTe

溫馨提示

  • 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

提交評論