OpenGL學習筆記(五)

2021-10-04 15:37:43 字數 1145 閱讀 7544

乙個glsl頂點著色器的源**如下:

#version 330 core

layout (location =

0) in vec3 apos;

void

main()

在opengl 3.3以及更高的版本中,glsl版本號和opengl版本是匹配的(比如說glsl 420版本對應於opengl 4.2)。

每個著色器都起始於乙個版本宣告。例子中設定3.3版本,並且宣告使用核心模式。

下一步,使用in關鍵字,在頂點著色器中宣告所有的輸入頂點屬性(input vertex attribute)。現在我們只關心位置(position)資料,所以我們只需要乙個頂點屬性。glsl有乙個向量資料型別,它包含1到4個float分量,包含的數量可以從它的字尾數字看出來。由於每個頂點都有乙個3d座標,我們就建立乙個vec3輸入變數apos。我們同樣也通過layout (location = 0)設定了輸入變數的位置值(location)。

為了設定頂點著色器的輸出,我們必須把位置資料賦值給預定義的gl_position變數,它在幕後是vec4型別的。在main函式的最後,我們將gl_position設定的值會成為該頂點著色器的輸出。由於我們的輸入是乙個3分量的向量,我們必須把它轉換為4分量的。我們可以把vec3的資料作為vec4構造器的引數,同時把w分量設定為1.0f來完成這一任務。

乙個glsl片段著色器的源**如下:

#version 330 core

out vec4 fragcolor;

void

main()

片段著色器所做的是計算畫素最後的顏色輸出。例子中的片段著色器將會一直輸出橘黃色。

在計算機圖形中顏色被表示為有4個元素的陣列:紅色、綠色、藍色和alpha(透明度)分量,通常縮寫為rgba。當在opengl或glsl中定義乙個顏色的時候,我們把顏色每個分量的強度設定在0.0到1.0之間。這三種顏色分量的不同調配可以生成超過1600萬種不同的顏色

片段著色器只需要乙個輸出變數,這個變數是乙個4分量向量,它表示的是最終的輸出顏色,我們應該自己將其計算出來。我們可以用out關鍵字宣告輸出變數,這裡我們命名為fragcolor。例子中將乙個alpha值為1.0(1.0代表完全不透明)的橘黃色的vec4賦值給顏色輸出。

OpenGL入門筆記(五)

以前也聽說過紋理對映,不過一直沒明白是怎麼回事情,只是以為是在繪製好的三維圖形表面再進行更為細緻的繪製,從而繪製出物體表面的紋理,就像畫桌子把桌面的條紋也畫出來一樣。今天學習的就是如何使用2d紋理繪製圖形。紋理對映demo 總結一下,使用紋理對映分為以下幾個步驟 1 從位 件載入紋理對映所用到的點陣...

OpenGL入門學習(五)

今天要講的是三維變換的內容,課程比較枯燥。主要是因為很多函式在單獨使用時都不好描述其效果,我只好在最後舉乙個比較綜合的例子。希望大家能一口氣看到底了。只看一次可能不夠,如果感覺到迷糊,不妨多看兩遍。有疑問可以在下面跟帖提出。我也使用了若干圖形,希望可以幫助理解。在前面繪製幾何圖形的時候,大家是否覺得...

OpenGL學習筆記

我是一名ios開發者,opengl是乙個比較重要的技術。所以就此開啟我的菜鳥之路。opengl open graphics library 是乙個跨程式設計語 言 跨平台的程式設計圖形程式接 它將計算機的資源抽象稱為乙個個opengl的物件,對這些資源的操作抽象為乙個的opengl指令.direct...