今天學習了OpenGL的入門,了解了一下他的流程框架,具體什么什么直接操作硬件啊什么的OpenGL的資料就不講了,什么時候整理一下。直接進入流程框架:
我們用的glut輔助庫,他能讓我們減少好多的操作,例如創建窗口,初始化設備,他都為我們建好了。
開始:
1.初始化opengl
2.設置渲染模式為:GLUT_DOUBLE | GLUT_RGBA
3.設置窗口大小,和標題,
4.創建窗口,
5.進入Opnegl里面的初始化。Opengl里面的初始化這里的初始化一定要在創建窗口以后。
6.設置渲染的函數
7.設置變化窗口大小,調整視口的函數
8.主程序循環。
這就是程序的主框架,我們只要把這些內容寫入到main函數中,然后再自己實現相關的函數就可以了。是不是給我們帶來了很大的方便呢。廢話少說。奉上源代碼:
#include <gl\glut.h>

void display(void)


{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清楚顏色數據和深度數據(清屏)

glBegin(GL_TRIANGLES); //繪制一個三角型
glColor3f(1.0,0,0); //繪制顏色為紅色
glVertex3f (0, 0, -2.0); //繪制三角型的一個頂點0,0,-2
glColor3f(0,1.0,0); //同理繪制其他兩個頂點
glVertex3f (1, 1, -2.0);
glColor3f(0,0,1.0);
glVertex3f (1, 0, -2.0);
glEnd(); //結束繪制三角型

glutSwapBuffers(); //交換緩沖區。顯示圖形
}

//初始化
void init (void)


{
glClearColor (1.0, 0.0, 0.0, 0.0); //清理顏色,為黑色,(也可認為是背景顏色)
}

//當窗口大小改變時,會調用這個函數
void reshape(GLsizei w,GLsizei h)


{
//這里小說明一下:矩陣模式是不同的,他們各自有一個矩陣。投影相關
//只能用投影矩陣。(只是目前情況下哦,等我學多了可能就知道為什么了。)

glViewport(0,0,w,h); //設置視口
glMatrixMode(GL_PROJECTION); //設置矩陣模式為投影變換矩陣,
glLoadIdentity(); //變為單位矩陣
gluPerspective(60, (GLfloat)w / h, 0, 1000); //設置投影矩陣
glMatrixMode(GL_MODELVIEW); //設置矩陣模式為視圖矩陣(模型)
glLoadIdentity(); //變為單位矩陣
}


int main(int argc, char** argv)


{
glutInit(&argc, argv); //Opnegl初始化
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA); //設置顯示模式為雙緩沖,RGEBA

glutInitWindowSize (250, 250); //窗口大小
glutInitWindowPosition (100, 100); //窗口位置
glutCreateWindow ("hello"); //創建一個標題為hello的窗口
init (); //初始化資源,這里一定要在創建窗口以后,不然會無效。
glutDisplayFunc(display); //窗口大小改變時的回調
glutReshapeFunc(reshape); //繪制圖形時的回調
glutMainLoop(); //主循環。
return 0;
}
在這里只是話了一個三角形。呵呵。