第一個OpenGL程序

剛開始學習OpenGL,感受這個挺有趣的(在繪製三維模型時,空間想象能力要求比較高,否則很頭疼的)。html

新東西,新心情。。。來一發紅色三角形。java

我就是要經過OpenGL來繪製一個紅色的三角形。如今咱們來看一下代碼:緩存

 

#include <GL/glut.h>

void display()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	// 清除屏幕和深度緩存
	glLoadIdentity();	// 重置當前的模型觀察矩陣
	glTranslatef(0.0f, 0.0f, -5.0f);	// 移入屏幕5個單位
	glColor3f(1.0f, 0.0f, 0.0f);	// 顏色設置爲紅色
	glBegin(GL_TRIANGLES);	// 開始繪製三角形
		glVertex3f(0.0f, 1.0f, 0.0f);     // 上頂點
		glVertex3f(-1.0f, -1.0f, 0.0f);	  // 左下頂點
		glVertex3f(1.0f, -1.0f, 0.0f);	  // 右下頂點
	glEnd();	// 結束繪製
	glFlush();	// 強制刷新緩衝
}

void initGL()
{		
	glViewport(0, 0, 300, 300);	// 重置當前的視口
	glMatrixMode(GL_PROJECTION);	// 選擇投影矩陣
	glLoadIdentity();	// 重置投影矩陣
	gluPerspective(45.0f, (GLfloat)300 / (GLfloat)300, 0.1f, 100.0f);	// 設置視口的大小
	glMatrixMode(GL_MODELVIEW);	// 選擇模型觀察矩陣
	glLoadIdentity();	// 重置模型觀察矩陣

	glShadeModel(GL_SMOOTH);	// 平滑投影
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);	// 黑色背景
	glClearDepth(1.0f);	// 設置深度緩存
	glEnable(GL_DEPTH_TEST);	// 啓用深度測試
	glDepthFunc(GL_LEQUAL);		// 深度測試類型
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	// 透視修正
}

int main(int argc, char *argv[])
{
	glutInit(&argc, argv);	// 初始化GLUT
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);	// 設置顯示模式(這裏是單緩存和RGB顏色模式的窗口)
	glutInitWindowSize(300, 300);	// 設置窗口大小
	glutInitWindowPosition(300, 300);	// 設置窗口初始位置
	glutCreateWindow("第一個OpenGL程序");	// 建立一個窗口
	initGL();	// OpenGL的設置
	glutDisplayFunc(display);	// 註冊一個繪圖函數
	glutMainLoop();		// 進入GLUT事件處理循環
	return 0;
}

 

 

關於投影矩陣,深度緩存這些東西,下次更加熟悉以後再寫一下。。。函數

OpenGL源碼:http://www.eyesourcecode.com/forum-OpenGL-1.htmloop

相關文章
相關標籤/搜索