原创 OpenGL學習:立方體紋理和天空包圍盒(Cubemaps And Skybox)

寫在前面  之前學習了2D紋理映射,實際上還有其他類型的紋理有待我們進一步學習,本節將要學習的立方體紋理(cubemaps),是一種將多個紋理圖片複合到一個立方體表面的技術。在遊戲中應用得較多的天空包圍盒可以使用cubemap實現

原创 OpenGL學習: 幀緩衝對象(Frame Buffer Object)

寫在前面  一直以來,我們在使用OpenGL渲染時,最終的目的地是默認的幀緩衝區,實際上OpenGL也允許我們創建自定義的幀緩衝區。使用自定義的幀緩衝區,可以實現鏡面,離屏渲染,以及很酷的後處理效果。本節將學習幀緩存的使用.。 本

原创 OpenGL學習:幾何着色器(geometry shader)

除了頂點着色器(vertex shader)和片元着色器(fragment shader),實際上OpenGL還提供了一個可選的幾何着色器(geometry shader)。幾何着色器位於頂點和片元着色器之間,如果沒有使用時,則頂點

原创 OpenGL學習: 光照系列2-材質和lighting maps使用

上一節學習了Phong reflection model,但是還存在不足,本節使用材質屬性,以及使用diffuse map和specular map改善上一節的實現。 本節內容整理自:  1.www.learnopengl.com

原创 OpenGL學習: uniform blocks(UBO)在着色器中的使用

目前,我們在着色器中要傳遞多個uniform變量時,總是使用多個uniform,然後在主程序中設置這些變量的值;同時如果要在多個shader之間共享變量,例如投影矩陣projection和視變換矩陣view的話,仍然需要爲不同shad

原创 便籤.txt

1.xorg截圖:xwd -display :0.0 -out root.xwd -root    轉換:convert 1.xwd 1.jpg 2

原创 OpenGL學習: 反走樣初步(Anti-aliasing basic)

繪製的物體邊緣部分出現鋸齒的現象稱之爲走樣(aliasing)。反走樣(Anti-aliasing)是減輕這種現象的方法。反走樣本身也是一個比較複雜的主題,深入瞭解需要有信號處理中的背景知識,例如信號採樣、信號重構、濾波等知識,本節作

原创 OpenGL學習: 環境紋理映射(environment mapping)

上一節初步學習了使用cubeMap創建天空包圍盒,本節繼續深入Cubemap這個主題,學習環境紋理貼圖。 本節內容整理自: 1.www.learnopengl.com cubemaps 環境紋理貼圖 同上一節的Cubema

原创 OpenGL學習:Per-fragment operation(1)-模板測試(stencil test)

片元后處理(Per-fragment operation) per-fragment系列操作包括模板測試,深度測試,混合測試等一系列對每個片元進行的處理,這一系列處理過程如下:     *Pixel ownership

原创 算法學習(1):最短路徑—Dijkstra算法和Floyd算法

從某頂點出發,沿圖的邊到達另一頂點所經過的路徑中,各邊上權值之和最小的一條路徑——最短路徑。解決最短路的問題有以下算法,Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法,本文研究的是floyd算法和dij

原创 OpenGL學習:Per-fragment operation(2)-深度測試(depth test)

通過本節可以瞭解到 爲什麼需要深度緩衝區? OpenGL中怎麼使用深度緩衝區 ? 可視化深度值 深度值的精度問題-ZFighting 問題背景 在繪製3D場景的時候,我們需要決定哪些部分對觀察者是可見的,或者說哪些部分對觀察者不可見

原创 OpenGL學習: 光照系列3-光源類型和使用多個光源

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

原创 OpenGL學習:Per-fragment operation(3)-混合(blending)

之前學習了使用模板緩衝來製作特殊效果,本節將繼續學習一個高級主題-混色(Blending)。通過使用混色,我們可以製作透明、半透明效果。 混色的概念 所謂混色,就是將當前要繪製的物體的顏色和顏色緩衝區中已經繪製了的物體的顏色進

原创 淺拷貝和深拷貝的區別

拷貝構造函數,是一種特殊的構造函數,它由編譯器調用來完成一些基於同一類的其他對象的構建及初始化。其唯一的參數(對象的引用)是不可變的(const類型)。此函數經常用在函數調用時用戶定義類型的值傳遞及返回。拷貝構造函數要調用基類的拷貝

原创 OpenGL學習:模型加載-obj模型和AssImp模型

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