OpenGL的核心模式與立即渲染模式

2022-02-01 05:28:35 字數 829 閱讀 7799

早期的opengl使用立即渲染模式(immediate mode,也就是固定渲染管線),這個模式下繪製圖形很方便。opengl的大多數功能都被庫隱藏起來,開發者很少能控制opengl如何進行計算的自由。而開發者迫切希望能有更多的靈活性。隨著時間推移,規範越來越靈活,開發者對繪圖細節有了更多的掌控。立即渲染模式確實容易使用和理解,但是效率太低。因此從opengl3.2開始,規範文件開始廢棄立即渲染模式,並鼓勵開發者在opengl的核心模式(core-profile)下進行開發,這個分支的規範完全移除了舊的特性。

當使用opengl的核心模式時,opengl迫使我們使用現代的函式。當我們試圖使用乙個已廢棄的函式時,opengl會丟擲乙個錯誤並終止繪圖。現代函式的優勢是更高的靈活性和效率,然而也更難於學習。立即渲染模式從opengl實際運作中抽象掉了很多細節,因此它在易於學習的同時,也很難讓人去把握opengl具體是如何運作的。現代函式要求使用者真正理解opengl和圖形程式設計,它有一些難度,然而提供了更多的靈活性,更高的效率,更重要的是可以更深入的理解圖形程式設計。

這也是為什麼我們的教程面向opengl3.3的核心模式。雖然上手更困難,但這份努力是值得的。

現今,更高版本的opengl已經發布(寫作時最新版本為4.5),你可能會問:既然opengl 4.5 都出來了,為什麼我們還要學習opengl 3.3?答案很簡單,所有opengl的更高的版本都是在3.3的基礎上,引入了額外的功能,並沒有改動核心架構。新版本只是引入了一些更有效率或更有用的方式去完成同樣的功能。因此,所有的概念和技術在現代opengl版本裡都保持一致。當你的經驗足夠,你可以輕鬆使用來自更高版本opengl的新特性。

使用者模式與核心模式

首先了解一下使用者模式和核心模式。一般說來,程序既可在使用者模式下執行,又可在核心模式下執行。核心模式的許可權高於使用者模式的許可權。程序每次呼叫乙個系統呼叫時,程序的執行方式都發生變化 從使用者模式切換到核心模式,然後繼續執行。可見 乙個程序在cpu上執行可以有兩種執行模式 程序狀態 使用者模式和...

核心與使用者模式

1.windows使用兩種處理器特權級別 1.核心 2.使用者 2.幾乎所有的 都在使用者模式,除了作業系統和硬體驅動 3.使用者模式不能直接訪問硬體,它被限制只能訪問cpu上所有暫存器和可用指令的乙個子集,所以我們為了改變硬體或者修改核心中的狀態,必須依賴api 4.進入核心模式的方式 sysen...

opengl的選擇模式

步驟按順序來,不然會無法拾取,返回 1 1,初始化命名緩衝,glselectbuffer buffer size,buffer 2,設定渲染模式為gl select 3,初始化命名堆疊,glinitnames glpushname 0 示例 void select object cpoint poi...