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

void display(void)


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

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

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

//初始化
void init (void)


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

//當(dāng)窗口大小改變時(shí),會(huì)調(diào)用這個(gè)函數(shù)
void reshape(GLsizei w,GLsizei h)


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

glViewport(0,0,w,h); //設(shè)置視口
glMatrixMode(GL_PROJECTION); //設(shè)置矩陣模式為投影變換矩陣,
glLoadIdentity(); //變?yōu)閱挝痪仃?/span>
gluPerspective(60, (GLfloat)w / h, 0, 1000); //設(shè)置投影矩陣
glMatrixMode(GL_MODELVIEW); //設(shè)置矩陣模式為視圖矩陣(模型)
glLoadIdentity(); //變?yōu)閱挝痪仃?/span>
}


int main(int argc, char** argv)


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

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