linux下學習OpenGL

工作需要,開始學習openGL。其實需要學的是openGL ES 但是網上搜索一段之後發現相應的ES教程或資料都是針對有openGL經驗的人,所以先學習openGL。


參考資料:

OpenGL編程基礎(第3版)Edward Angel (段菲 譯)        入門級別
OpenGL超級寶典(第4版) (傳說中的藍寶書)           進階級別

OpenGL ES 2.0 Programming Guide 2009        opengl ES


首先,工作環境是Linux,Ubuntu發行版。

需要的庫:

GLUT (library "glut" on Linux)

OpenGL (library "GL" on Linux)

GL Utilities (library "GLU" on Linux)

X11

Xmu

Xi


編譯命令:

gcc -I/usr/include -L/usr/local/lib -L/usr/lib -lglut -lGLU -lGL -lX11 -lXmu -lXi -lXext -lm FILE_NAME_LIST -o TARGET

參考鏈接:http://www.divms.uiowa.edu/~cwyman/classes/common/howto/compile.html


第一個例子:

參考鏈接:http://soft.yesky.com/261/2398261.shtml   (這個網站的教程只是用於windows,所以後來換了其他教程,不過作爲了解,入門還是可以看看)

#include <stdlib.h>
#include <GL/glut.h> 
void background(void)
{
glClearColor(0.0,0.0,0.0,0.0);//設置背景顏色爲黑色
}


void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);//buffer設置爲顏色可寫


glBegin(GL_TRIANGLES);//開始畫三角形
glShadeModel(GL_FLAT);//設置爲光滑明暗模式


glColor3f(1.0,0.0,0.0);//設置第一個頂點爲紅色
glVertex2f(-1.0,-1.0);//設置第一個頂點的座標爲(-1.0,-1.0)


glColor3f(0.0,1.0,0.0);//設置第二個頂點爲綠色
glVertex2f(1.0,-1.0);//設置第二個頂點的座標爲(0.0,-1.0)


glColor3f(0.0,0.0,1.0);//設置第三個頂點爲藍色
glVertex2f(0.0,1.0);//設置第三個頂點的座標爲(-0.5,1.0)
glEnd();//三角形結束


glFlush();//強制OpenGL函數在有限時間內運行
}


void myReshape(GLsizei w,GLsizei h)
{
glViewport(0,0,w,h);//設置視口


glMatrixMode(GL_PROJECTION);//指明當前矩陣爲GL_PROJECTION
glLoadIdentity();//將當前矩陣置換爲單位陣
gluOrtho2D(-1.5,1.5,-1.5,1.5);
/*if(w <= h)
gluOrtho2D(-1.0,1.5,-1.5,1.5*(GLfloat)h/(GLfloat)w);//定義二維正視投影矩陣
else
gluOrtho2D(-1.0,1.5*(GLfloat)w/(GLfloat)h,-1.5,1.5);
glMatrixMode(GL_MODELVIEW);//指明當前矩陣爲GL_MODELVIEW*/
}


int main(int argc,char ** argv)
{
/*初始化*/
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(400,400);
glutInitWindowPosition(200,200);


/*創建窗口*/
glutCreateWindow("Triangle");


/*繪製與顯示*/
background();
glutReshapeFunc(myReshape);
glutDisplayFunc(myDisplay);


glutMainLoop();
return(0);
}


編譯:

$ gcc -I/usr/include -L/usr/local/lib -L/usr/lib -lglut -lGLU -lGL -lX11 -lXmu -lXi -lXext -lm hello-gl.c -o hello

運行:

$ ./hello


效果如圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章