計算機圖形學(Computer Graphics,簡稱CG)是一種使用數學算法將二維或三維圖形轉化爲計算機顯示器的柵格形式的科學。簡單地說,計算機圖形學的主要研究內容就是研究如何在計算機中表示圖形、以及利用計算機進行圖形的計算、處理和顯示的相關原理與算法。(來自百度百科)ios
OpenGL是個定義了一個跨編程語言、跨平臺的編程接口的規格,它用於三維圖象(二維的亦可)。c++
OpenGL是個專業的圖形程序接口,是一個功能強大,調用方便的底層圖形庫。(來自百度百科)
算法
今天開始就學習計算機圖形學和OpenGL,首先配置開發環境。編程
OpenGL核心庫系統自己都已經包含,可是除了OpenGL核心庫以外咱們還須要GLUT這個實用工具包。windows
下載地址:http://download.csdn.net/detail/yue19870813/7883421。緩存
下載完成後解壓出來會有5個文件,包括:glut.h, glut.dll, glut32.dll, glut.lib, glut32.lib。
編程語言
將dll文件copy到C:\Windows\SysWOW64目錄下(若是爲32位系統則在:C:\Windows\System32);函數
將lib文件copy到C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\下對應的版本,個人是64位;工具
最後將.h文件copy到C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl目錄下,到此爲止GLUT配置完成。
oop
1、基本的OpenGL語法
OpenGL基本庫中函數名都要以gl爲前綴,每一個單詞第一個字母大寫,例如:glBegin,glClear,glCopyPixels等。
OpenGL中常量是GL爲前綴,每一個單詞大寫,之間使用下劃線分割。
OpenGL中也有基本的數據類型,例如:GLbyte、GLshort、GLint、GLfloat、GLdouble、GLboolean。
2、程序中包含的頭文件
在windows系統中咱們要在程序中引入OpenGL的核心庫和windows.h。所以咱們的頭文件應該爲:
#include <windows.h> #include <GL\GL.h> #include <GL\GLU.h>可是咱們使用的是GLUT來處理窗口操做,因此就不須要引入GL.h和GLU.h了,只須要引入glut.h就能夠了。此外咱們還要引入c++中經常使用的頭文件,最終引入的內容應該爲:
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> #include <string> #include <windows.h> #include <GL\glut.h>3、使用GLUT對窗口進行管理。
使用OpenGL實用庫的第一步是初始化GLUT,初始化函數是:
glutInit(&argc, argv);下面的函數能夠給顯示的窗口一個標題:
glutCreateWindow("Test OpenGL Program");接着是咱們主要要作的事情,就是在窗口顯示內容,使用下面命令能夠將在lineSegment(咱們自定義的繪圖方法,後面將會給出)中繪製的圖形賦給顯示窗口:
glutDisplayFunc(lineSegment);在全部繪製完成的最後,咱們要調用下列語句將圖形內容激活,該函數必須是程序中的最後一個。
glutMainLoop();glutMainLoop()會使程序進入一個無窮循環之中,至關於咱們的主循環。
4、完整的OpenGL程序。
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> #include <string> #include <windows.h> #include <GL\glut.h> using namespace std; void init(void) { //設置顯示窗口的背景爲白色。參數順序爲:紅、綠、藍、透明度。 glClearColor(1.0, 1.0, 1.0, 0.0); //設置投影類型:正投影 glMatrixMode(GL_PROJECTION); //觀察參數:x座標值從0到200,y是從0到150 gluOrtho2D(0.0, 200.0, 0.0, 150.0); } //繪製線段的函數 void lineSegment(void) { //將窗口顏色的設置顯示到窗口上,參數是顏色緩存的位值 glClear(GL_COLOR_BUFFER_BIT); //設置顯示內容顏色 glColor3f(1.0, 0.0, 0.0); //繪製內容 glBegin(GL_LINES); glVertex2i(180, 15); glVertex2i(10, 145); glEnd(); glFlush(); } int _tmain(int argc, char **argv) { glutInit(&argc, argv); //設置窗口的緩存和顏色模型 //下面指定的是:窗口使用單個緩存而且使用RGB顏色模型來設定顏色值。 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //設置窗口左上角的位置 glutInitWindowPosition(50, 100); //設置窗口的寬高 glutInitWindowSize(800, 600); glutCreateWindow("Test OpenGL Program"); init(); glutDisplayFunc(lineSegment); glutMainLoop(); return 0; }這樣一個線段就被繪製出來了:
參考內容:《計算機圖形學(第三版)》 電子工業出版社
轉載請標明出處:http://blog.csdn.net/letthinking/article/details/39154401