




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實驗3、OpenGLS本圖元繪制系別:計算機學院專業(yè)班級: 10 信科 2 班姓名:實驗日期: 2013-5-10學號:實驗報告日期: 2013-5-10實驗目的1 熟悉 VC6.0 開發(fā)平臺;2熟悉OpenGL開發(fā)庫;實驗內容:在同一個窗口內繪制以下圖元:?用不同顏色繪制大小從1 到 5 的 5 個點;?用不同顏色繪制寬度為1、 3、 5 的三條直線段;? 繪制一條包含 5 個頂點的折線段;? 繪制一個三角形,三個頂點顏色各不相同,三角形內部用平滑方式進行填充;? 繪制一個六邊形;,不使用反混淆繪制寬度為 5 的直線;啟用反混淆后在不同位置繪制相同的直線,比較兩者異同。一個 OpenGL例1
2、.程序中有關畫圖的代碼: void DrawGLScene(GLvoid) / 此函數(shù)完成圖形繪制glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT/)/; 清除顏 色緩沖區(qū)和深度緩沖區(qū)glLoadIdentity(); / 重置當前模型視圖矩陣glTranslatef(-1.5f,0.0f,0.0f);/ 向左平移 50 個單位glBegin(GL_TRIANGLES); / 繪制三角形glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 1.0f, 0.0f);glColor3f(0.0f,1.0f,0.0f
3、);glVertex3f(-1.0f,-1.0f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f( 1.0f,-1.0f, 0.0f); glEnd();繪制glTranslatef(3.0f,0.0f,0.0f);個單位glColor3f(0.0f,1.0f,1.0f);glBegin(GL_QUADS);glVertex3f(-1.0f, 1.0f, 0.0f);glVertex3f( 1.0f, 1.0f, 0.0f);glVertex3f( 1.0f,-1.0f, 0.0f);glVertex3f(-1.0f,-1.0f, 0.0f); glEn
4、d();/ 畫筆設置為紅色/ 設置為綠色/ 設置為藍色/ 完 成 三 角 形 的/ 向右平移 3/ 設為青色/ 畫四邊形/ 完成四邊形繪制glFlush();實驗報告內容程序源碼;對主要畫圖函數(shù)的說明(函數(shù)的功能,參數(shù)等) 。/ 圖形 .cpp : Defines the entry point for the console application. /#include #include #include #include #define MAX 10A6;/ 如果需要記錄鼠標點的位置,就定義全局變量來保存struct Point int x, y;Point pt2;int pointNu
5、m=0;/ 標記點號, 0 表示線段起點, 1 表示線段中點void MyDrawGLScene() / 此函數(shù)完成圖形繪制int i;float pSizes5=1.0f,2.0f,3.0f,4.0f,5.0f; /設定五個點的大小float lWidth5=1.0f,2.0f,3.0f,4.0f,5.0f; /設定五條直線的寬度glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); / 清除顏色緩沖區(qū)和 深度緩沖區(qū)glLoadIdentity();/ 重置當前模型視圖矩陣glTranslatef(-1.8f,-0.1f,0.0f);/ 向左平
6、移 50 個單位/ 繪制五個大小不同的的點glEnable(GL_POINT_SMOOTH); / 開啟反混淆for( i=0;i5;i+)/ 繪制五個大小不同的的點glPointSize(pSizesi);glTranslatef(0.1f,-0.0f,0.0f);/ 向右平移50 個單位glBegin(GL_POINTS);glColor3f(1.0f,0.0f,0.0f);/ 畫筆設置為紅色glVertex2f(1.0f,1.0f);glEnd();/ 繪制五條不同寬度的直線glTranslatef(-0.5f,-0.1f,0.0f);/ 向左平移 50 個單位for(i=0;i5;i+
7、) /繪制五條不同寬度的直線glTranslatef(0.0f,-0.1f,0.0f); glLineWidth(lWidthi); / glBegin(GL_LINES);glColor3f(0.0f,1.0f,0.0f);glVertex2f(1.0f,1.0f);glVertex2f(2.0f,1.0f);glEnd();/ 畫五個定點的折線glTranslatef(0.0f,-0.2f,0.0f);glColor3f(0.0f,0.0f,1.0f);glLineWidth(3.0f); /glBegin(GL_LINE_STRIP);glVertex2f(1.0f,1.0f);glVe
8、rtex2f(1.2f,1.1f);glVertex2f(1.4f,1.0f);glVertex2f(1.6f,1.1f);glVertex2f(1.8f,1.0f);glEnd();設定直線的寬度/ 畫筆設置為綠色/ 向左平移 50 個單位/ 畫筆設置為藍色設定直線的寬度/畫五個定點的折線/ 繪制三角形glTranslatef(1.5f,0.7f,0.0f);/ 向左平移 50 個單位glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); / 選擇三角形的光柵化模式為多邊形內部被填充,選用參數(shù)GL_FILLglEnable(GL_POLYGON_STIPPLE);
9、 / 平滑填充三角形glBegin(GL_TRIANGLES);glColor3f(1.0f,0.0f,0.0f);glVertex3f( 0.0f, 0.15f, 0.0f);glColor3f(0.0f,0.5f,0.0f);glVertex3f(-0.15f,-0.15f, 0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(0.15f,-0.15f, 0.0f);/ 畫筆設置為紅色/ 設置為綠色/ 設置為藍色度為glEnd();/ 完成三角形的繪制/ 畫正六形glTranslatef(0.5f,0.0f,0.0f);glColor3f(0.0f,1.0
10、f,1.0f);glBegin(GL_POLYGON);glVertex3f(-0.2f, 0.0f, 0.0f);glVertex3f(-0.1f, 0.1732f, 0.0f);glVertex3f( 0.1f,0.1732f, 0.0f);glVertex3f(0.2f,0.0f, 0.0f);glVertex3f(0.1f,-0.1732f, 0.0f);glVertex3f(-0.1f,-0.1732f, 0.0f);glEnd();/ 使用反混淆繪制寬度為 5 的直線 glTranslatef(-0.4f,-0.3f,0.0f);glLineWidth(5.0f);glColor3
11、f(0.3f,0.5f,0.9f);glEnable(GL_LINE_SMOOTH); glBegin(GL_LINES);5 的直線glVertex3f(-0.5f, -0.1f, 0.0f);glVertex3f(0.5f, 0.1f, 0.0f);glEnd();/ 不適用反混淆方式繪制寬度為glDisable(GL_LINE_SMOOTH); glBegin(GL_LINES);繪制寬度為 5 的直線glVertex3f(-0.1f, -0.1f, 0.0f);glVertex3f(0.9f, 0.1f, 0.0f);glEnd();5/ 畫筆設置為紫色/的直線關閉反混淆/glFlus
12、h();向右平移 0.5 個單設為青色完成正六邊形形繪向下平移 0.3 個單設定直線的寬度為使用反混淆繪制寬不適用反混淆方式void myDisplay()glClear(GL_COLOR_BUFFER_BIT);/ 畫圖之前先設置畫圖區(qū)的背景色glColor3f (1.0f, 0.0f, 0.0f);/設置前景色(相當于畫筆顏色)LARGE_INTEGER Freq;LARGE_INTEGER start;LARGE_INTEGER end;QueryPerformanceFrequency(&Freq); / 獲取時鐘周期if(pointNum = 2)QueryPerformanceCo
13、unter(&start); / 獲取時鐘計數(shù)MyDrawGLScene();QueryPerformanceCounter(&end);printf(用時%d微秒n,(end.QuadPart-start.QuadPart)*1000000/Freq.QuadPart); glFlush();/ 強制刷新緩沖,保證繪圖命令被立即執(zhí)行void Init()glClearColor(0.0, 0.0, 0.0, 0.0);glShadeModel(GL_SMOOTH);/ 設置平滑顏色過渡模式 (相當于在兩種顏色間進行差值,想象一下線段的兩個端點顏色不一樣,線段中間該是什么顏色)printf(
14、這是一個演示程序!n);/ 在窗口中給出提示void Reshape(int w, int h) glViewport(0, 0, (GLsizei) w, (GLsizei) h);/設置視口大小與窗口大小完全glMatrixMode(GL_PROJECTION);/ 指定當前矩陣為投影矩陣glLoadIdentity();/ 將投影矩陣初始化為單位矩陣gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);/定義二維投影矩陣/ 自定義的鍵盤消息處理函數(shù),需要在main 函數(shù)中調用對應的回調函數(shù)才能起作用void keyboard(unsigned
15、char key, int x, int y) switch (key) case c:break;case r:break;case x:exit(0);break;default:break;void mouse(int button, int state, int x, int y) / 鼠標處理回調函數(shù)if (button = GLUT_LEFT_BUTTON & state = GLUT_DOWN) / 如果鼠標左鍵按 下if(pointNum = 2) pointNum=0; / 重新記錄線段的端點ptpointNum.x=x;/ 保存線段端點的橫坐標ptpointNum.y=600-y;/ 保存線段端點的縱坐標 由于屏幕坐標的縱軸向下,而畫圖時坐標向上,因此需要取反pointNum+;glutPostRedisplay();void main(int argc, char *argv)glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);glutInitWindowPosition(100, 100);gl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墊資施工合同中的合同解除程序3篇
- 估值合同樣本3篇
- 公司入資合同范本
- 行政管理與大數(shù)據(jù)運用試題及答案
- 項目管理考試考生必知的知識點試題及答案
- 注冊會計師備考效果評估方式試題及答案
- 行政管理師證書考試核心能力要求及試題及答案
- 2024年微生物檢驗技師考試試題及答案分享
- 2025年注冊會計師考試特色課程試題及答案
- 2024年微生物檢驗方向試題及答案
- 模塊21.CR400AF型動車組轉向架 《高速鐵路動車組機械設備維護與檢修》教學課件
- AQ6111-2023個體防護裝備安全管理規(guī)范
- GGD交流低壓配電柜運行、維護說明書、安裝、操作手冊
- 多發(fā)性骨髓瘤腎損傷診治指南(2024版)
- 2024年中考數(shù)學反比例函數(shù)-選擇題(壓軸)(試題)
- 【渠道視角下伊利股份營運資金管理存在的問題及優(yōu)化建議探析9000字(論文)】
- 【語文】古詩詞誦讀《登快閣》教學課件 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 2024年江蘇省南通市通州區(qū)中考一模英語試卷
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- JTG B05-01-2013 公路護欄安全性能評價標準
- (高清版)DZT 0208-2020 礦產(chǎn)地質勘查規(guī)范 金屬砂礦類
評論
0/150
提交評論