OpenGL基礎圖形編程 – OpenGL基本程式結構

來源:互聯網
上載者:User
OpenGL基礎圖形編程 - OpenGL基本程式結構
作者:未知    文章來源:中國遊戲開發人員    點擊數: 1043    更新時間:2005-4-5

用OpenGL編寫的程式結構類似於用其他語言編寫的程式。實際上,OpenGL是一個豐富的三維圖形函數庫,編寫OpenGL程式並非難事,只需在基本C語言中調用這些函數,用法同Turbo C、Microsoft C等類似,但也有許多不同之處。
  本指南所有的程式都是在Windows NT的Microsoft Visual C++Integration Environment下編譯串連的,其中有部分標頭檔和函數是為這個環境所用的,例如判別作業系統的標頭檔“glos.h”。此外,為便於各類讀者同時快速入門,在短時間內掌握OpenGL編程的基本方法和技巧,指南中例子盡量採用標準ANSI C調用OpenGL函數來編寫,而且所有常式都只採用OpenGL附帶的輔助庫中的視窗系統。此外,這樣也便於程式在各平台間移植,尤其往工作站UNIX作業系統移植時,也只需改動標頭檔等很少很少的部分。下面列出一個簡單的OpenGL程式:

  例4-1 OpenGL簡單常式(Simple.c)

  #include <GL/gl.h>
  #include <GL/glaux.h>
  #include "glos.h"

  void main(void)
  {
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(0,0,500,500);
    auxInitWindow("simple");

    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);

     glColor3f(1.0,0.0,0.0);
    glRectf(-0.5,-0.5,0.5,0.5);

     glFlush();
    _sleep(1000);
  }

  這個程式運行結果是在螢幕視窗內畫一個紅色的方塊。
  下面具體分析整個程式結構:首先,在程式最開始處是OpenGL標頭檔:<GL/gl.h>、<GL/glaux.h>。前一個是gl庫的標頭檔,後一個是輔助庫的標頭檔。此外,在以後的幾章中還將說明OpenGL的另外兩個標頭檔,一個是<GL/glu.h>實用庫的標頭檔,另一個是<GL/glx.h>X視窗擴充庫的標頭檔(這個常用在工作站上)。接下來是主函數main()的定義:一般的程式結構是先定義一個視窗:

  auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
  auxInitPosition(0,0,500,500);
  auxInitWindow("simple");

  auxInitDisplayMode(AUX_SINGLE|AUX_RGBA)設定視窗顯示模式為RGBA方式,即彩色方式,並且圖形緩衝為單緩衝(SINGLE BUFFER)。auxInitPosition(0, 0, 500, 500)定義視窗的初始位置,前兩個參數(0, 0)為視窗的左上方點的螢幕座標,後兩個參數(500,500)為視窗的寬度和高度。auxInitWindow("simple")是視窗初始化,字元參數是視窗名稱。
  然後是視窗內清屏:

  glClearColor(0.0,0.0,0.0,0.0); glClear(GL_COLOR_BUFFER_BIT);

  第一句將視窗清為黑色,第二句將顏色緩衝區清為glClearColor(0.0, 0.0, 0.0, 0.0)命令所設定的顏色,即同視窗背景顏色一致。
  再接著是在視窗內畫一個物體:

  glColor3f(1.0,0.0,0.0);
  glRectf(-0.5,-0.5,0.5,0.5);

  很明顯,第一句設定物體顏色,函數中前三個參數分別為R、G、B值,最後一個參數是Alpha值,範圍都從0至1;第二句繪製一個二維矩形。注意:OpenGL是針對三維圖形而言,因此用作OpenGL編程繪製物體必須意識到任何一個物體都是三維的,具有空間性,而顯示於螢幕上的物體都是三維物體在二維平面上的投影。
  從表面上看,上述程式碼很簡單,實際上已經用到了預設的投影形式(正射投影)。再看glFlush()函數,表示強制繪圖完成。最後一句_sleep(1000),參數單位為毫秒,整句意思是保持現有狀況一秒鐘,然後結束程式運行。這個函數是VC++的庫函數。
  總而言之,OpenGL程式基本結構為定義視窗、清理視窗、繪製物體、結束運行。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.