函式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 功能更新發布快 缺點...