原创 OpenGL學習腳印: 視變換(view transformation)

寫在前面 OpenGL中的座標處理過程包括模型變換、視變換、投影變換、視口變換等內容,這個主題的內容有些多,因此分節學習,主題將分爲5節內容來學習。上一節模型變換,本節學習模型變換的下一階段——視變換。到目前位置,主要在2D下

原创 OpenGL學習腳印:光源類型和使用多個光源(Light source and multiple lights)

寫在前面 上一節光照中使用材質和lighting maps介紹了使用材質屬性和lighting maps使物體的光照效果能反映物體的材料特性,看起來更逼真。在前面的章節中使用的實際上都是一個點光源,本節將學習其他幾種光源類型,以

原创 OpenGL學習腳印:深度測試(depth testing)

寫在前面 上一節我們使用AssImp加載了3d模型,效果已經令人激動了。但是繪製效率和場景真實感還存在不足,接下來我們還是要保持耐心,繼續學習一些高級主題,等學完後面的高級主題,我們再次來改進我們加載模型的過程。本節將會學習深度

原创 OpenGL學習腳印: 模型變換(model transformation)

寫在前面 前面爲本節內容準備了向量和矩陣、線性變換等內容,本節開始學習OpenGL中的座標處理。OpenGL中的座標處理過程包括模型變換、視變換、投影變換、視口變換等內容,這個主題的內容有些多,因此分節學習,主題將分爲5

原创 OpenGL學習腳印: 繪製一個三角形

寫在前面 接着上一節內容,開發環境搭建好後,我們當然想立即編寫3D應用程序了。不過我們還需要些耐心,因爲OpenGL是一套底層的API,因而我們要掌握的基本知識稍微多一點,在開始繪製3D圖形之前,本節我們將通過繪

原创 OpenGL學習腳印: 座標和變換的數學基礎(math-coordinates and transformations)

寫在前面 上一節介紹了向量和矩陣,本節將熟悉座標、線性變換、仿射變換以及座標轉換等概念和計算方法,這些內容對後續的學習將會有很大幫助。部分內容不是OpenGL編程初學者所必須掌握的,可以在以後需要時再回頭來看。

原创 OpenGL學習腳印: 投影矩陣和視口變換矩陣(math-projection and viewport matrix)

寫在前面 前面幾節分別介紹了模型變換,視變換,本節繼續學習OpenGL座標變換過程中的投影變換。這裏主要是從數學角度推導投影矩陣。對數學不感興趣的,可以稍微瞭解下,或者跳過本節內容。 本文主要翻譯並整理自 songho

原创 OpenGL學習腳印: 向量和矩陣要點(math-vector and matrices)

寫在前面 前面幾節內容環境搭建,繪製三角形,以及使用索引繪製,讓我們對現代OpenGL中繪圖做了簡單瞭解。要繼續後面的部分,需要熟悉OpenGL中涉及的數學知識。因此本節開始介紹OpenGL中的基本數學。 介紹這部分內容的主旨在

原创 OpenGL學習腳印:模型加載初步-加載obj模型(load obj model)

寫在前面 前面介紹了光照基礎內容,以及材質和lighting maps,和光源類型,我們對使用光照增強場景真實感有了一定了解。但是到目前爲止,我們通過在程序中指定的立方體數據,繪製立方體,看起來還是很乏味。本節開始介紹模型加載,

原创 OpenGL學習腳印: 二維紋理映射(2D textures)

寫在前面 前面兩節介紹了向量和矩陣,以及座標和轉換相關的數學,再繼續討論模型變換等其他包含數學內容的部分之前,本節介紹二維紋理映射,爲後面學習做一個準備。紋理映射本身也是比較大的主題,本節只限於討論二維紋理的基本使用,對

原创 OpenGL學習腳印: 光照中材質和lighting maps使用(material and lighting maps)

寫在前面 這一節隔了好久了,今天終於有時間寫完。上一節光照基礎學習實現了Phong reflection model,但是還存在不足,本節使用材質屬性,以及使用diffuse map和specular map改善上一節的實現。本

原创 OpenGL學習腳印:混色(Blending)

寫在前面 上一節學習了使用模板緩衝來製作特殊效果,本節將繼續學習一個高級主題-混色(Blending)。通過使用混色,我們可以製作透明、半透明效果。本節示例代碼均可以在我的github下載。 本節內容整理自www.lear

原创 OpenGL學習腳印:模板測試(stencil testing)

寫在前面 上一節介紹了深度測試,本節繼續學習一個高級主題-模板測試(stencil testing)。模板緩衝同之前介紹的顏色緩衝、深度緩衝類似,通過它我們可以實現很多的特效,例如輪廓、鏡面效果,陰影效果等。本節示例程序均可以從

原创 OpenGL學習腳印: 使用索引繪圖(index drawing)

寫在前面 上一節熟悉了OpenGL繪圖的中基本的VAO和VBO,以及着色器,並繪製了一個三角形。本節在上一節基礎上,介紹利用EBO的索引繪圖。 通過本節可以瞭解到 索引繪圖使用方法 索引繪圖應用場合 使用EBO開始索引繪圖

原创 OpenGL學習腳印: 歐拉角實現第一人稱相機(FPS camera with Euler angle)

寫在前面 上一節視變換(view transformation) ,介紹了相機的設置參數,並建立了圓形座標系和球形座標系下的相機位置隨着時間改變的繪製立方體程序。程序中用戶無法通過鍵盤和鼠標來和場景中物體交互,本節實現一個