下面是個人學習的總結:
知識點:
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規範面試,我們就可以直接使用新的渲染特性
5,狀態機: opengl 是乙個 巨大的狀態機, 可以通過一系列變數來描述 opengl 此刻應該如何執行if(gl_arb_extension_name)
else
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...