01->OpenGL 實驗環境配置(glut)及簡單實例


 --  簡介  --

OpenGL是通過數學等理論知識定義3D或2D模型,由計算機通過流水線渲染技術進行渲染,產生逼真的場景圖像,電影和游戲中的特效都有用到。每每看到精美的畫面,真想自己也能做出如此作品。先好好學習吧!

想要學習是好事,關鍵是要堅持,方法得當。之前在導師的提議下,買了《交互式計算機圖形學》,粗略過了一遍,其中有提到glut這個圖形庫,這是個開發中小型圖形應用的跨平台圖形庫,對於入門學習圖形學是很適合的。可以查看百度百科介紹

glut下載鏈接:https://www.opengl.org/resources/libraries/glut/  【頁面中點擊Pre-compiled Win32 for Intel GLUT 3.7 DLLs for Windows 95 & NT 下載】

--  環境配置  --

實驗中下載window預編譯文件,默認文件名為:glutdlls37beta.zip,解壓到G:\glut\lib,可根據自己需要解壓到其他位置。

總共包含5個文件:glut.dll、glut32.dll、glut.lib、glut32.lib、glut.h

為了方便,將兩個動態鏈接庫都拷貝到C:\Windows\System32 和C:\Windows\SysWOW64

啟用visual studio 2017,新建一個空項目,在屬性管理器中選擇Debug|Win32,右鍵屬性,選擇VC++ 目錄, 點擊右邊的包含目錄並編輯路徑為G:\glut\lib,庫目錄同樣操作

接着,左手邊點擊鏈接器,展開選擇輸入,在附加依賴項中編輯glut32.lib和glut.lib

 

vs中配置方法都類似,在學習OpenCV時配置情況類似。

--  代碼測試  --

新建一個源文件main.cpp

輸入以下代碼:

 1 #include <glut.h>
 2 
 3 void display(void) {  4  glClear(GL_COLOR_BUFFER_BIT);  5     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);  6  glFlush();  7 }  8 
 9 int main(int argc, char *argv[]) { 10     glutInit(&argc, argv); 11     glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); 12     glutInitWindowPosition(300, 300); 13     glutInitWindowSize(300, 300); 14     glutCreateWindow("第一個OpenGL程序"); 15     glutDisplayFunc(&display); 16  glutMainLoop(); 17     return 0; 18 }

運行后結果如下:

默認情況下,結果中包含一個命令行窗口和OPenGL的結果窗口。

--  畫點、畫線、畫矩形  --

在上面測試代碼中,將display函數修改如下,即可畫出幾個點幾條邊和一個矩形。

畫點畫邊包含在glBegin()和glEnd()之間,點的話就簡單指定位置及大小顏色等,邊的話類似,只是每條邊要以兩個點確定,故在畫線實驗代碼中點成對出現

 1 void display(void) {
 2     glClear(GL_COLOR_BUFFER_BIT);
 3     glColor3f(0.0f, 0.3f, 1.0f);
 4     glRectf(-0.5f, -0.5f, 0.5f, 0.5f);  // 畫矩形
 5     glPointSize(5.0f);
 6     glColor3f(1.0f, 0.0f, 0.0f);
 7 
 8     // 打點
 9     glBegin(GL_POINTS);
10     glVertex2f(0.0f, 0.0f);
11     glVertex2f(-0.5f, -0.5f);
12     glVertex2f(0.5f, -0.5f);
13     glVertex2f(-0.5f, 0.5f);
14     glVertex2f(0.5f, 0.5f);
15     glEnd();
16 
17     // 畫線
18     glLineWidth(2.0f);
19     glColor3f(0.0f, 1.0f, 1.0f);
20     glBegin(GL_LINES);
21     glVertex2f(1.0f, 0.0f);
22     glVertex2f(0.0f, 1.0f);
23     glVertex2f(0.0f, 1.0f);
24     glVertex2f(-1.0f, 0.0f);
25     glVertex2f(-1.0f, 0.0f);
26     glVertex2f(0.0f, -1.0f);
27     glVertex2f(0.0f, -1.0f);
28     glVertex2f(1.0f, 0.0f);
29     glEnd();
30 
31     glFlush();
32 }

 

 修改后,運行結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM