Opengl入門基礎筆記
OpenGL實用工具庫(OpenGL Utility Toolkit Library, GLUT)
提供所有視窗系統的共同功能
打開視窗
從滑鼠和鍵盤擷取輸入
彈出菜單
事件驅動
代碼可以在平台間移植,但是GLUT缺乏在特定平台上優秀工具包所具有的功能
滾動條
絕大多數常數采用#define在頭檔案gl.h, glu.h和glut.h中定義
注意#include <glut.h>會自動包含其它兩個頭檔案
如:
glBegin(GL_POLYGON);
glClear(GL_COLOR_BUFFER_BIT);
在頭檔案中也定義了OpenGL資料類型: GLfloat, Gldouble,….
基本幾何形狀
點
線段
多邊形
*屬性
*變換
視圖Viewing
模組化Modeling
*控制(GLUT)
*輸入(GLUT)
*查詢Query
glVertex3f(x,y,z) glVertex3fv(p)
gl表示屬于GL庫 3指參數個數 f指參數的類型 P為指向float的指針
'注意每部分的大小寫'
OpenGL不是面向對象的,是以邏輯上的一個函數卻對應着多個OpenGL函數:
glVertex3f
glVertex2i
glVertex3dv
内在存貯模式是相同的
在C++中很容易建立重載函數,但效率卻成為主要問題
·每個GLUT程式都必須有一個顯示回調函數
·隻要OpenGL确定顯示内容要被重新整理時,顯示回調函數就會被調用。例如,當視窗被打開的時候
·main函數以程式進入事件循環後為結束
·The main function ends with the program entering an event loop
·glutInit使得應用程式可擷取指令行參數并初始化系統
·glutInitDisplayMode設定視窗的屬性
RGB顔色
單緩沖區
·屬性按照邏輯組合在一起
·glutWindowSize 以像素為機關定義視窗的尺寸
·glutWindowPosition 定義視窗左上角在顯示器上的位置
·glutCreateWindow建立視窗,标題來自于參數值
·glutDisplayFunc定義顯示回調函數
·glutMainLoop進入無窮的事件循環
簡單多邊形:邊除頂點外不相交
凸多邊形:對于多邊形中任意兩點,連接配接這兩點的線段完全在多邊形内
平面多邊形:所有頂點在同一平面上
·顔色(點、線、多邊形)
·點的大小
·線段的寬度與實虛模式
·多邊形
前後面
填充模式:顔色或模式
顯示為實心多邊形或者隻顯示邊界
·顔色的每個分量在幀緩沖區中是分開存貯的
·在緩沖區中通常每個分量占用8位位元組
·注意在函數glColor3f中顔色值的變化範圍是從0.0(無)到1.0(全部), 而在glColor3ub中顔色值的變化範圍是從0到255
由一組RGB值構成一張表,“顔色”是表中項的索引
需要更少的記憶體
索引通常隻有8位
現在重要性下降
由glColor*設定的顔色成為狀态的一部分,後續構造過程将使用該顔色,直至它被修改為止
顔色與其它屬性不是對象的一部分,但是在渲染對象時要把這些屬性賦給對象
可以按下述過程建立具有不同顔色的頂點
glColor
glVertex
OpenGL根據多邊形頂點顔色插值出内部顔色
glShadeModel(GL_SMOOTH)
GL_SMOOTH: 采用光滑着色,獨立的處理圖元中各個頂點的顔色。對于線段圖元,線段上各點的顔色将根據兩個頂點的顔色通過插值得到。對于多邊形圖元,多邊形内部區域的顔色将根據所有頂點的顔色插值得到。即有過渡色效果
第一個頂點的顔色确定填充顔色
glShadeModel(GL_FLAT)
GL_FLAT:采用恒定着色,使用圖元中某個頂點的顔色來渲染整個圖元。
