歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux操作系統:OpenGL下的HelloWorld

Linux操作系統:OpenGL下的HelloWorld

日期:2017/2/25 10:36:55   编辑:Linux教程

Linux操作系統:OpenGL下的HelloWorld

程序入門都有個Hello World,OpenGL也不例外。

  話說,某程序員退休後,對書法非常感興趣,於是買來了上好的文房四寶,准備好好地練習練習。他鋪開宣紙,提起毛筆,鄭重地寫下一行字:Hello World!

  當我們將開發程序必備的工具准備妥當時,你的第一行字該怎麼寫呢?假設你已經裝好了OpenGL和glut(我在linux下是mesa和freeglut),那麼一個最簡的程序應該如下:

  #include

  void display(){

  glClear(GL_COLOR_BUFFER_BIT);

  glFlush();

  }

  int main(int argc, char* argv[]){

  glutInit(&argc, argv);

  //glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);

  glutCreateWindow("Hello");

  //glutInitWindowPosition(0,0);

  //glutInitWindowSize(500,500);

  glutDisplayFunc(display);

  glutMainLoop();

  return 0;

  }

  display函數是必不可少的,因為OpenGL需要知道怎麼畫。glClear也是必不可少的,因為OpenGL每畫一幀都要重繪一次,這個背景是什麼東西要明確。當然,如果你不要背景,或者說畫的內容覆蓋了整個窗口,那也可以不要glClear,但總之,display函數中要有繪圖的函數。glFlush也不可少,強制刷新,我的系統下沒這個函數是不行的,也許不需要(系統也許會隱式地調用了這個函數),但最好是放上去。

  主函數中的四個函數應該說都是必須的。glutInit注意第二個參數不用取址。

  我的編譯方式是

  g++ -lglut -lGL -lGLU hello.cpp -o Hello

  即用到libglut, libGL, libGLU。我每個OpenGL程序都是這麼編譯的,當然,在這個程序中,-lGLU不是必須的,甚至-lGL也不是必須的,因為libGL包含在 libglut中了(也許這只是freeglut的實現問題)。不管怎樣,都用上不會出錯,特別是,我將其寫到編譯腳本中去了,以後遇到復雜的程序就不需要改動了。

Copyright © Linux教程網 All Rights Reserved