opengl狀態機
在opengl中使用狀態機的機制去儲存opengl當前的狀態。所謂的opengl狀態機也就是一組opengl的狀態集合。有一些狀態可以開啟或關閉,可以通過glenable(glenum capability)函式進行開啟,gldisable(glenum capability)對狀態進行關閉。如果要獲取某個狀態是否被開啟,可以使用glboolean glisenabled(glenum capability)來獲取某個狀態是否被開啟。還有一些opengl狀態是通過設定值來實現的。opengl提供了一組查詢函式可以查詢布林型,整型,單浮點型和雙浮點型變數的值:
void glgetbooleanv(glenum pname,glboolean *params);
void glgetdoublev(glenum pname,gldouble *params);
void glgetfloatv(glenum pname,glfloat *params);
void glgetintegerv(glenum pname,glint *params);
狀態值的儲存和恢復
在opengl中狀態值是使用堆疊進行儲存的。函式void glpushattrib(glbitfield mask);負責對屬性值進行壓棧;函式void glpopattrib(glbitfield mask)讓屬性值出棧。在這兩個函式中可以使用或(|)操作符對多個屬性進行壓棧和出棧的操作。
opengl中的錯誤
在opengl狀態中有一組狀態值是專門用來標識opengl中發生的錯誤的。當錯誤發生時,某些狀態值就會被設定。我們可以通過呼叫函式glgeterror來獲取這些狀態值。
glenum glgeterror(void)
以下是一張opengl的錯誤**表:
我們還可以通過使用gluerrorstring()來獲取錯誤標識的描述字串。
const glubyte* gluerrorstring(glenum errorcode);
此處的errorcode是通過glgeterror來獲得的。例如:
gluerrorstring(gl_invalid_enum); //此處將返回字串:invalid enumerant
opengl版本資訊
我們可以通過函式glgetstring(glenum name)來獲取gl函式庫的資訊。
使用glhint
在opengl中會有兩種模式,一種是執行流暢的,但是畫面效果會大一些折扣。還有一種模式是畫面清晰的,但是執行的流暢程度會大一些折扣。glhint函式允許指定是注重畫面質量還是流暢程度。函式原型如下:void glhint(glenum target, glenum mode);
opengl擴充套件
有一些硬體廠商會為opengl進行一些擴充套件。為了保證不同廠商的擴充套件相互衝突,廠商必須向opengl working group註冊他們的擴充套件。標準標頭檔案glext.h包含了最常見的一些擴充套件。我們可以通過glgetstring(gl_extensions)來獲取驅動支援的所有擴充套件。該函式返回乙個字串陣列,表示擴充套件的名稱。
OpenGL基礎知識 三
今天講一下如何在opengl中繪製一些簡單的圖形。現在把opengl基礎知識 二 中編寫的程式做一下簡單的修改,源 如下 include void renderscene void 當視窗大小變化時呼叫 void changesize glsizei w,glsizei h int main int...
OpenGL基礎知識(一)
一 opengl是什麼?1 opengl是一種應用程式程式設計介面,它是一種可以對圖形硬體裝置特性進行訪問的軟體庫。2 opengl被設計為乙個現代化的 硬體無關的介面,因此我們可以在不考慮計算機作業系統或視窗系統的前提下,在多種不同的圖形硬體系統上,或者完全通過軟體的方式實現opengl介面。3 ...
OpenGL(一)基礎知識
opengl,opengl es metal等,今天先說opengl。opengl是跨平台的,在xcode中可以用c 來寫 對於乙個入行就開始做ios的我來說,學習一門新的語言也是一道坎!opengl其實更多的是操作gpu cpu20 的運算,80 的邏輯業務。gpu是100 的運算。cpu是在多調...