Opengl ES 三種型別修飾

2021-08-21 18:15:10 字數 1479 閱讀 9028

函式gluniform**()函式賦值的。在(vertex和fragment)shader程式內部,uniform變數就像是c語言裡面

的常量(const ),它不能被shader程式修改。(shader只能用,不能改)

如果uniform變數在vertex和fragment兩者之間宣告方式完全一樣,則它可以在vertex和fragment共享使用。

(相當於乙個被vertex和fragment shader共享的全域性變數)

uniform變數一般用來表示:變換矩陣,材質,光照引數和顏色等資訊。

以下是例子:

uniform mat4 viewprojmatrix; //投影+檢視矩陣

uniform mat4 viewmatrix; //檢視矩陣

uniform vec3 lightposition; //光源位置

2.attribute變數

attribute變數是只能在vertex shader中使用的變數。(它不能在fragment shader中宣告attribute變數,

也不能被fragment shader中使用)

一般用attribute變數來表示一些頂點的資料,如:頂點座標,法線,紋理座標,頂點顏色等。

glvertexattribpointer()為每個attribute變數賦值。

以下是例子:

uniform mat4 u_matviewprojection;

attribute vec4 a_position;

attribute vec2 a_texcoord0;

varying vec2 v_texcoord;

void main(void)

3.varying變數

varying變數是vertex和fragment shader之間做資料傳遞用的。一般vertex shader修改varying變數的值,

然後fragment shader使用該varying變數的值。因此varying變數在vertex和fragment shader二者之間的聲

以下是例子:

// vertex shader

uniform mat4 u_matviewprojection;

attribute vec4 a_position;

attribute vec2 a_texcoord0;

varying vec2 v_texcoord; // varying in vertex shader

void main(void)

// fragment shader

precision mediump float;

varying vec2 v_texcoord; // varying in fragment shader

uniform sampler2d s_basemap;

uniform sampler2d s_lightmap;

void main()

程序 三種型別,三種狀態

一 程序的概念 程序是執行乙個程式時所分配的資源,資源包括占用的cpu,記憶體等,是乙個動態執行過程。二 程序的組成 正文段使用者資料段 系統資料段 程序控制塊 pcb cpu暫存器值 堆疊 三 程序控制塊pcb 程序控制塊是系統用來控制和管理程序,獲得程序狀態和程序存在特徵的唯一標識。包括 程序標...

NAT的三種型別

一 靜態nat 內部本地位址一對一轉換成內部全域性位址,相當內部本地的每一台pc都繫結了乙個全域性位址,即使這個位址沒有被使用,其他的電腦也不能拿來轉換使用,這樣容易造成ip位址的資源浪費,一般是用於在內網中對外提供 服務的服務 器二 動態nat 顧名思義,動態位址轉換就是,在內部 本地位址轉換的 ...

Android App三種型別與對比

優點 1 可訪問手機所有功能 可實現功能最齊全 2 執行速度快 效能高,絕佳的使用者體驗 3 支援大量圖形和動畫。不卡,反應快。4 比較快捷地使用裝置端提供的介面,處理速度上有優勢。缺點 在過去主要是成本高 周期長,android和ios都需要單獨開發。優點 1 開發周期短 2 功能更新發布快 缺點...