1 / 19

OPENGL 基本認識

OPENGL 基本認識. OPENGL 介紹 . 什麼是 OPENGL? 並非程式語言 , 而是一種 API 3D 繪圖與模型程式庫 像是 C 的 runtime library 提供許多功能包裝好的函式庫 沒有 OPENGL 程式 , 而是使用了 OPENGL 這個 API. 寫程式前的準備動作. Vc++ 會使用到的程式庫 opengl32.lib glu32.lib 標頭檔 gl.h : 放 opengl 的函數、型態、巨集 glu.h: 工具程式庫的函數原型 寫法 #include<gl/gl.h> #include<gl/glu.h>.

latika
Download Presentation

OPENGL 基本認識

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. OPENGL基本認識

  2. OPENGL介紹 • 什麼是OPENGL? • 並非程式語言,而是一種API • 3D繪圖與模型程式庫 • 像是C的runtime library • 提供許多功能包裝好的函式庫 • 沒有OPENGL 程式,而是使用了OPENGL這個API

  3. 寫程式前的準備動作 • Vc++會使用到的程式庫 • opengl32.lib • glu32.lib • 標頭檔 • gl.h : 放opengl的函數、型態、巨集 • glu.h:工具程式庫的函數原型 • 寫法 • #include<gl/gl.h> • #include<gl/glu.h>

  4. Opengl安裝教學 • 首先我們要先確定有三個檔案 • 1.glut.h • 2.glut32.lib • 3.glut32.dll • vc++使用者: • 1.將glut.h放到vc98\include\gl\ • 2.將(glut.h)glut32.dll glut32.dll放再與程式同一資料夾下 • 3.直接編譯不需其他設定

  5. 資料型態 • 所有以GL為首的資料型態代表OPENGL,後面接所對應C的資料型態名稱,以u為首代表unsigned • 變數名稱的意義 • size:深度或長度 • clamp:用在顏色合成中代表顏色的強度 • GLenum:列舉變數 • GLbitfield:含有二進位資料欄位變數

  6. 函數命名 • 命名範例 • glColor3f • gl:來源的library的名稱 • Color:root command • 3f:函數接受3個浮點數參數 • 沒有指定型態,預設為double

  7. GLUT • 是一種輔助的程式庫 • 提供彈出式功能表 • 視窗的管理 • 支援搖桿 • OPENGL中沒有任何的有關視窗螢幕管理的函數與命令, 鍵盤,滑鼠輸入函數

  8. GLUT的顯示模式 • 單一緩衝區 • 所有繪圖指令都會執行時顯示是在視窗上 • 雙緩衝區視窗 • 繪圖指令會建立一個仍未顯示的畫面, 快速切換到視窗上顯示出來 • 目的:不希望畫圖的過程被一步步顯示出來

  9. 畫點 • Vertex • 使用glVertex3f(x,y,z) • 用法: • glBegin(GL_POINTS); • glVertex3f(x,y,z) • glEnd(); • glPointsize(GLfloat size)改變點的大小 • 參數代表點的半徑

  10. 畫線 • GL_LINES:直線 • Ex:在(0,0,0)與(50,50,50)畫出線段 • glBegin(GL_LINES); • glvertex3f(0.0f,0.0f,0.0f); • glvertex3f(50.0f,50.0f,50.0f); • glEnd(); • GL_LINE_STRIP:連續線段

  11. 設定線段寬度 • 使用glLineWidth(GLfloat width); • 虛線使用 • glEnable(GL_LINE_STIPPLE) ,啟動 • glLineStipple(虛線寬度,樣式)

  12. 畫三角形 • GL_TRINGLES • Ex:glBegin(GL_TRINGLES),後接3個點. • 預設為顏色透明 • 必須指定顏色才能看到結果.

  13. 顏色的設定 • 顏色: 由紅,綠,藍組成 • 語法: glColor3f(R,G,B); • R,G,B範圍: 0.0 ~ 1.0 ,(浮點數表示)

  14. 程式本體 • 設定顯示模式 • glutInitDisplayMode(GLUT_SINGLE)|GLUT_RGB) • 1.mode :single/double • 2.RGBA色彩顯示模式 • 建立視窗 • 由GLUT程式庫來建立 • glutCreateWindow(“標題名稱”);

  15. 程式本體 • 顯示回呼函數(Displaying Callback) • 語法: glutDisplayFunc(RenderScene); • 目的: • 將RenderScene函數定為Displaying Callback function • 時機: • 1.GLUT需要繪圖時 • 2.視窗第一次顯示/視窗大小被變更

  16. 重要的function • void SetupRC(); • 用途:繪圖前設定初始化視窗的顏色 • glclearColor(r,g,b,alpha); • 在renderscene()中搭配 glclear(GL_Color_Buffer_Bit)實際執行視窗顏色填滿. • 用該色填滿視窗 • void RenderScene(void) • 用途:繪圖的動作就寫在這裡 • void ChangeSize(Glsizei w,Glsizei h) • 用途:當視窗改變時,重設座標系統

  17. #include <windows.h> • #include <gl/glut.h> • void RenderScene(void) • { • glClear(GL_COLOR_BUFFER_BIT);//清除 • //繪圖動作由此加入….. • glFlush(); • } • void SetupRC(void) { • glClearColor(0.0f, 0.0f, 1.0f, 1.0f); • } • void main(void) • { • glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); • glutCreateWindow("這是我的第一支程式"); • glutDisplayFunc(RenderScene); • SetupRC(); • glutMainLoop(); • }

  18. 第一支程式

  19. 實際畫出圖形

More Related