[OpenGL]VS2010配置OpenGL開發環境

weixin_33912246發表於2019-01-08

opengl概述

OpenGL(Open Graphics Library)是一個跨程式語言、跨平臺的專業圖形程序介面。
OpenGLSGI公司開發的一套計算機圖形處理系統,是圖形硬體的軟體介面,任何一個OpenGL應用程式無須考慮其執行環境所在平臺與作業系統,在任何一個遵循OpenGL標準的環境下都會產生相同的可視效果。OpenGL不是一種程式語言,而是一種API(Application Programming Interface,應用程式程式設計介面)

OpenGL的圖形庫函式封裝在動態連結庫OpenGL32.DLL中,開發基於OpenGL的應用程式,必須先了解OpenGL的庫函式。OpenGL函式命令方式十分有規律,每個庫函式均有字首gl、glu、aux,分別表示該函式屬於OpenGL基本庫、實用庫或輔助庫。 

  • OpenGL核心庫函式:100+個,以gl作為字首;用來建立各種各樣的幾何模型、進行座標變換、產生光照效果、進行紋理對映、產生霧化效果等所有的二維和三維圖形操作。
  • OpenGL實用庫函式:43個,以glu作為字首;實用函式庫是比核心庫更高一層的函式庫;由於OpenGL是一個圖形標準,是獨立於任何視窗系統或作業系統的,在OpenGL中沒有提供視窗管理和訊息事件響應的函式,也沒有滑鼠和鍵盤讀取事件的功能,所以在程式設計輔助庫提供了一些基本的視窗管理函式、事件處理函式和簡單的事件函式。這類函式以”aux”作為字首。值得一提的是,目前AUX程式設計輔助庫已經很大程度上被GLUT庫取代了。以下介紹以GLUT庫為例。
  • OpenGL輔助庫函式:31個,以aux作為字首;
  • Windows專用庫函式(WGL):6個,以wgl作為字首;
  • Win32API函式(WGL):5個,無字首。 
  • GLUT代表OpenGL應用工具包(OpenGL Utility Toolkit),是一個與視窗系統無關的工具包。它作為AUX庫的功能更強的替代品,用於隱藏不同視窗系統API的複雜性。GLUT的子程式的字首使用”glut”。 

vs2010-OpenGL環境配置 

  1. 下載GLUTWindows環境下的GLUT下載地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip
  2. 將下載的壓縮包解開,將得到5個檔案:glut.h glut.lib glut32.lib glut.dll glut32.dll
  3. glut.h放到(C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl\)這個資料夾中.
  4. glut.libglut32.lib放到靜態函式庫所在資料夾中.(安裝目錄\VC\lib\)
  5. glut.dllglut32.dll放到作業系統所在目錄下面的system32資料夾內. (C:Windows\system32)

測試配置環境

  1. 開啟VS2010,選擇File->New->Project,然後選擇Win32 Console Application,選擇一個名字OpenGLTest,然後按OK。 
  2. 在彈出的對話方塊左邊點Application Settings,找到Empty project並勾上,選擇Finish
  3. 然後向該工程新增一個程式碼檔案,取名為OpenGLTest.cpp
  4. OpenGLTest.cpp中新增程式碼
#include<gl/glut.h>
//#include<gl/glu.h>  //glut.h自動包含了glu.h 和 gl.h
//#include<gl/gl.h>
/*<gl/glut.h>內部有
#pragma comment (lib, "winmm.lib")     // link with Windows MultiMedia lib 
#pragma comment (lib, "opengl32.lib")  // link with Microsoft OpenGL lib 
#pragma comment (lib, "glu32.lib")     // link with OpenGL Utility lib 
#pragma comment (lib, "glut32.lib")    // link with Win32 GLUT lib 
*/
void renderScene(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
	glBegin(GL_TRIANGLES);
	glVertex3f(-0.5,-0.5,0.0);
	glVertex3f(0.5,0.0,0.0);
	glVertex3f(0.0,0.5,0.0);
	glEnd();
	glutSwapBuffers();
}

int _tmain(int argc, _TCHAR* argv[])
{
	glutInit(&argc, (char**) argv);//glutInit用來初始化GLUT庫並同視窗系統對話協商。
	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);//glutInitDisplayMode用來確定所建立視窗的顯示模式。引數GLUT_SINGLE 指定單快取視窗,這也是預設模式,對應的模式為GLUT_DOUBLE 雙快取視窗。引數GLUT_RGB指定顏色RGBA模式,這也是預設模式,對應的模式為GLUT_INDEX 顏色索引模式視窗。
	glutInitWindowPosition(100,100);//glutInitWindowPosition 設定初始視窗的位置,第一個引數為視窗左上角x的座標,第二個引數為視窗左上角y的座標,以畫素為單位。螢幕的左上角的座標為(0,0),橫座標向右逐漸增加,縱座標向下逐漸增加。
	glutInitWindowSize(320,320);//glutInitWindowSize 初始化視窗的大小,第一個引數為視窗的寬度,第二個引數為視窗的高度,以畫素為單位。
	glutCreateWindow("Hello OpenGL");//glutCreateWindow 建立頂層視窗,視窗的名字為擴號中的引數。
	glutDisplayFunc(renderScene);//glutDisplayFunc 註冊當前視窗的顯示回撥函式。當一個視窗的影象層需要重新繪製時,GLUT將呼叫該視窗的的顯示回撥函式。在此例中的renderScene就是顯示回撥函式,顯示回撥函式不帶任何引數,它負責整個影象層的繪製。我們的大部分工作將集中在這個函式中。
	glutMainLoop();//glutMainLoop 進入GLUT事件處理迴圈。glutMainLoop函式在GLUT程式中最多隻能呼叫一次,它一旦被呼叫就不再返回,並且呼叫註冊過的回撥函式。所以這個函式必須放在註冊回撥函式的後面,此例中為glutDisplayFunc 。
	return 0;
}
效果:

相關文章