2022-01-13 17:19:08 索煒達電子 1179
文件編號:L51
文件大?。?/strong>7.1M
代碼行數(shù):2036行(主程序)
開發(fā)環(huán)境:VS2019、OpenGL
猿創(chuàng)承諾:該源碼均通過親自測試可正常運行
簡要概述:計算機圖形學實驗,用OpenGL實現(xiàn)三維空間,繪制三維房間、家具、房屋建筑等。OpenGL實現(xiàn)三維空間、方向轉換、按鍵交互、含源代碼、執(zhí)行文件。
實現(xiàn)圖形場景等包括:房屋、草坪、小路、天空、教學樓、樹木、圍墻、燈光、紋理;包括多種交互場景。室內繪制豐富。
用到的OpenGL 函數(shù)
glColor3f(blue); //設置顏色
glutSolidCube(size);//繪制正方體
glVertex3f(x, y, z);//設置點坐標
glLightfv(a,b,c); //設置光源
glTranslatef(x, y, z`)`;//平移函數(shù)
glScalef(x, y, z); //放大/縮小函數(shù)
glRotatef(angle, x, y, z);//繞軸旋轉函數(shù)
glutSolidSphere(radius, slices, stacks);//繪制球體
glBegin(圖形類型) 與 glEnd(void)
在glBegin(arg)的參數(shù)部分選擇要繪制的圖形類型; 在glBegin()與glEnd()之間添加坐標點。比如繪制三角形,就選擇glBegin()的參數(shù)為GL_TRIANGLES, glVertex3f(x, y, z)添加三角形三個頂點的坐標,末尾加上glEnd().這種代碼繪制的圖形一般是一個三維空間中的平面圖形。
glBegin(GL_TRIANGLES);
glVertex3f(x1, y1, z1);
glVertex3f(x2, y2, z2);
glVertex3f(x3, y3, z3);
glEnd();
glPushMatrix() 與 glPopMatrix()
在glPushMatrix() 與 glPopMatrix() 之間添加繪制基本平面圖形,通過組合、平移、放大縮小就能輕易的實現(xiàn)復雜三維視圖。
比如: 用glutSolidCube(1);繪制一個邊長為一個單位的立方體,這個立方體的中心坐標為(t0, 0, 0);
進行平移、放大:
glPushMatrix();
glTranslatef(1, 2, 3)
glScalef(1,1,3);
glPopMatrix();
這樣立方體的中心位置的坐標變成了(1,2,3),而且長寬高分別變成了1,1,3個單位長度。
按鍵交互:
1/2/3 燈光
4 書本
5/6 茶壺
7 老鼠
8 電視
9 機器人
0 椅子
o 開/關門
b 回到房間
a 左轉
b 右轉
方向鍵 前后左右移動
w 上移動
s 下移動
運行效果:
文件列表:
目錄│文件列表:
├ 演示視頻
│ └ 演示視頻.mp4
└ 項目源碼
│ glut32.dll
│ opengl.CPP
│ OPENGL1.exe
└ README.txt