OpenGL 個人初學雜記 入門

2021-10-05 11:08:29 字數 1659 閱讀 4318

下面是個人學習的總結:

知識點:

1,opengl   它是包含了一系列的 圖形 、 影象的函式   並不是乙個api    緊緊是由 khronos 組織 制定並維護 規範

2,規範 主要是  制定:  函式是如何執行   以及 函式的輸出值     

題外話: 至於內部每個函式的的具體實現   由opengl 庫的開發者決定,opengl 的開發者 一般都是 顯示卡的生產商提供   也有一些愛好者改編的版本  

3, 1) opengl 3.2  之前 都是 立即渲染模式 (固定渲染管線) 

2) opengl  3.3 之後 包括 3.3  使用的是  核心渲染模式    後期一直都是再3.3 基礎之上進行擴充套件

立即渲染模式  與 核心渲染模式  優缺點

1, 3.2 之前  容易理解  使用簡單   但是大多數功能都被隱藏了,很少能控制opengl的計算自由,靈活性差 效率低

2,3.3之後 使用了現代函式,靈活性高了  效率高了 但是學習更難了,需要去理解 opengl和圖形程式設計,可以讓人更深入的理解圖形程式設計,後續更高版本 都是在 3.3 基礎上進行擴充套件的      3.3 的規範完全移除了舊的特效

4,擴充套件  如果出來了 新的特性或 渲染上的大優化。 可以不必等待新的 opengl規範面試,我們就可以直接使用新的渲染特性  

if(gl_arb_extension_name)

else

5,狀態機: opengl 是乙個 巨大的狀態機, 可以通過一系列變數來描述 opengl 此刻應該如何執行

opengl 的狀態  被稱為 opengl 的上下文 context    通過改變 context 的變數 來修改渲染

6,opengl 的核心  是乙個 c庫 

由於c庫的一些特性 很難被翻譯到其他的高階語言 所以 引入了一些抽象層   比如  物件object 

物件包含了一些 選項的集合,它是乙個 opengl 狀態的子集  可以給這個物件設定  大小 顏色等等

struct object_name ;
乙個物件例子

// opengl的狀態

struct opengl_context ;

// 建立物件

unsigned int objectid = 0;

//建立乙個物件

glgenobject(1, &objectid);

// 繫結物件至上下文

glbindobject(gl_window_target, objectid);

// 設定當前繫結到 gl_window_target 的物件的一些選項  比如 寬  高

glsetobjectoption(gl_window_target, gl_option_window_width, 800);

glsetobjectoption(gl_window_target, gl_option_window_height, 600);

// 將上下文物件設回預設  解綁這個物件

glbindobject(gl_window_target, 0);

當我們需要操作繪製的時候,只需要設定 物件變數即可

當我們需要繪製某個物件的時候,只需要繫結 乙個包含 對應模型資料的物件就可以了

雜記 OpenGL例項化

例項化是因為每渲染一組頂點 模型的時候 我們就要繫結一次頂點屬性指標以及頂點資料。當我們繪製多個相同的頂點資料時,可以通過例項化來只繫結一次頂點,而通過傳遞不同的引數到著色器中來實現繪製多個模型。第乙個方法是 使用uniform,設定乙個浮點數vec2位置偏移陣列。而通過gl instanceid,...

魔眼個人雜記

python ide 工具用pycharm 招聘 前程無憂 拉勾 獵聘網 100offer boss直聘 sourceinsight 文字選中後 按 shfit f8 高亮顯示 jdi屏 京東方 ipad3 解析度 2048 1536 ipad1 解析度 1024 768 vr顯示中 增加乙個固定的...

Opengl 個人總結

將學到的opengl有些坑和知識作些總結,當然了,坑還在挖,所以還會更新的 1.vao vbo ebo 這三個東西的功能是非常強大的,vbo是儲存頂點有關元資料的,一般情況下,我們不會出錯,但是沒有很了解的情況下,我們畫多個圖就會出錯,首先我先強調下幾點意識 乙個繪製物件我們會申請乙個vao vbo...