初學openGL(C++)
openGL初學者(C++)
1. 配置openGL環境
第一步,選擇一個編譯環境
這裡我選擇Visual Studio 2013作為學習OpenGL的環境。
第二步,安裝GLUT工具包
首先,下載glut工具包:點選下載glut庫。解壓後,得到5個檔案:glut.h,glut.dll,glut32.dll,glut.lib,glut32.lib。
下面以VS2013為例,VS2010,VS2015與之類似,VS2017有點不同。
Windows環境下安裝GLUT的步驟:
1. 把解壓得到的glut.dll和glut32.dll放在C:\Windows\system32資料夾內(32位系統)或 C:\Windows\SysWOW64(64位系統)。
- 把解壓得到的glut.h複製到Visual Studio 2013的安裝目錄(路徑)下的"\VC\include\gl"資料夾中,如果沒有gl這個資料夾則新建一個。VS2013的預設安裝路徑為 C:\Program Files\Microsoft\Visual Studio 13.0。
3. 把解壓得到的glut.lib和glut32.lib放到靜態函式庫所在資料夾(如果是VS2013,則是其安裝目錄下面的"VC\lib"資料夾)。
第三步,寫第一個openGL程式
(1) 開啟VS2013,新建一個Win32 Console Application(控制檯應用程式),在嚮導中的Application Settings(應用程式設定),找到附加選項中的Empty project(空專案),並勾選上。
(2) 右鍵點選原始檔,新增新建項後,選擇C++檔案,即可開始我們的第一個openGL程式。
(3) 第一個簡單的openGL程式(可以直接複製到VS環境中執行,筆者建議自己動手打程式碼)
#include <GL/glut.h>
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
}
void myDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一個OpenGL程式");
init();
glutDisplayFunc(&myDisplay);
glutMainLoop();
return 0;
}
該程式執行後,在一個黑色的視窗會出現一個白色的矩形。執行效果如下:2.openGL入門
1. 標頭檔案
程式需要包含標頭檔案glut.h。
#include <GL/glut.h>
這是GLUT的標頭檔案。 本來OpenGL程式一般還要包含<GL/gl.h>和<GL/glu.h>,但glut.h的標頭檔案中已經自動將這兩個檔案包含了,不必再次包含。
2. main函式
int main(int argc, char *argv[])
{
//此處省去其他語句
return 0;
}
這個是帶命令列引數(必須寫出)的main函式。
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("第一個OpenGL程式");
glutDisplayFunc(&myDisplay);
glutMainLoop();
以glut開頭的函式都是GLUT工具包所提供的函式,下面常用的函式進行介紹。
glutInit(&argc, argv)
對GLUT進行初始化,這個函式必須在其它的GLUT使用之前呼叫一次。glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE)
設定顯示方式,其中:
GLUT_RGB表示使用RGB顏色,與之對應的還有GLUT_INDEX(表示使用索引顏色)。
GLUT_SINGLE表示使用單緩衝,與之對應的還有GLUT_DOUBLE(使用雙緩衝)。glutInitWindowPosition(100, 100)
設定視窗在膝上型電腦螢幕中的位置(100,100)。glutInitWindowSize(400, 400)
設定視窗的大小(400X400)。glutCreateWindow("第一個OpenGL程式")
根據前面設定的資訊建立視窗。"第一個OpenGL程式"引數將被作為視窗的標題。
注意:視窗被建立後,並不立即顯示到螢幕上。需要呼叫glutMainLoop才能看到視窗。glutDisplayFunc(&myDisplay)
設定回撥函式,當需要進行畫圖時,myDisplay這個函式就會被呼叫。(筆者這個說法不夠準確)。glutMainLoop
啟動程式執行,進行訊息處理迴圈。(這個函式可以顯示視窗,並且等待視窗關閉後才會返回)
3. 回撥函式myDisplay和自定義初始函式init
通過 glutDisplayFunc(&myDisplay)
,我們設定了“當需要畫圖時,請呼叫myDisplay函式”。
觀察myDisplay中的三個函式,不難發現都以gl開頭(以gl開頭的函式都是OpenGL的標準函式)
下面對用到的函式進行介紹。
- glClear,使用清除顏色。GL_COLOR_BUFFER_BIT表示清除顏色。glClear函式的其他作用暫不介紹。
- glRectf,畫一個矩形。四個引數分別表示了位於對角線上(左下角和右上角)兩個點的橫、縱座標。
- glFlush,保證前面的OpenGL命令立即執行(而不是讓它們在緩衝區中等待)。
其作用跟fflush(stdout)類似 - glClearColor 設定背景清除顏色。四個引數前三個(0.0)是rgb值,代表黑色最後一個是設定透明度。
為了避免篇幅太長,筆者在此對openGL不多做介紹了。
其他參考資料
相關文章
- OpenGL Matrix Class (C++)C++
- C++類初學筆記C++筆記
- OpenGL/OpenGL ES 入門:基礎變換 - 初識向量/矩陣矩陣
- openGL學習
- 跟我一起學習C++ 之 初識C++C++
- OpenGL 學習 01 Mac 搭建 OpenGL 環境Mac
- C++ Builder 初學問與答 (十一) (轉)C++UI
- C++ Builder 初學問與答 (十二) (轉)C++UI
- C++ Builder 初學問與答(三) (轉)C++UI
- C++ Builder 初學問與答(八) (轉)C++UI
- 在學習opengl前
- 初學C++的一些小細節(1)C++
- OpenGL 學習 04 圖元
- C++初學解惑(4)——建構函式(上) (轉)C++函式
- OPENGL(14) c++曲面構造 網格線 (轉)C++
- OpenGL筆記之一 開學筆記
- OpenGL ES 學習資源分享
- OpenGL 學習 08 - 球體世界
- Android OpenGL 學習筆記Android筆記
- OpenGL/OpenGL ES 初探
- OpenGL 學習 03 移動的矩形
- OpenGL學習筆記(12)基本光照筆記
- 初學
- C++初階(stack+queue)C++
- 跟我一起學習C++ 之 初識名稱空間C++
- Linux C++ 自學筆記之二<菜鳥初學系列> (轉)LinuxC++筆記
- c++初學者的50個忠告C++
- 初學goGo
- Vue初學Vue
- 初學JavaScriptJavaScript
- Maven初學Maven
- Arduino初學UI
- Java初學Java
- Bootstrap初學boot
- AJAX初學
- SQLite 初學SQLite
- Ruby初學
- 初學phpPHP