部分內容**自
今天學learnopengl的時候看到了這個函式,因為最終的影象有誤,但是不知道具體**出錯,發現glgetshaderiv()函式可以用來檢測著色器編譯是否成功。
名稱
glgetshaderiv - 從著色器物件返回乙個引數
規範
void glgetshaderiv(gluint shader,glenum pname,glint *params);
引數
shader
指定要查詢的著色器物件,直接放入需要檢查的著色器即可。
pname
指定著色器物件的引數。 可接受的符號名稱為
(1)gl_shader_type:
shader_type:著色器型別
用來判斷並返回著色器型別,若是頂點著色器返回gl_vertex_shader,若為片元著色器返回gl_fragment_shader.
(2)gl_delete_status:
detele status:刪除狀態
判斷著色器是否被刪除,是返回gl_true,否則返回gl_false,
(3)gl_compile_status:
compile_status:編譯狀態
用於檢測編譯是否成功,成功為gl_true,否則為gl_false.
(4)gl_info_log_length:
information log length: log是日誌的意思,所以是返回著色器的資訊日誌的長度
用於返回著色器的資訊日誌的長度,包括空終止字元(即儲存資訊日誌所需的字元緩衝區的大小)。 如果著色器沒有資訊日誌,則返回值0。
(5)gl_shader_source_length:
shader_source_length:著色器原始碼長度
返回著色器原始碼長度,不存在則返回0;
params
函式將返回的結果儲存在輸入的第三個引數中,因為這個函式得到的結果有很多種,所以要單獨放在第三個引數當中,所以是void glgetshaderiv而不是gluint。
錯誤
gl_invalid_enum:pname不是乙個可接受的值。
gl_invalid_value:shader不是opengl生成的值。
gl_invalid_operation:不支援著色器編譯器的情況下查詢pname為gl_compile_status,gl_info_log_length或gl_shader_source_length(gl_shader_type,gl_delete_status不會報這個錯)。
gl_invalid_operation:shader沒有關聯著色器物件。
用法示例如下:
glint result = gl_false;
glgetshaderiv(vertexshader,gl_compile_status,&result);
if (result==gl_false)
函式基礎 匿名函式,函式,箭頭函式,立即執行函式
doctype html html lang en head meta charset utf 8 meta name viewport content width device width,initial scale 1.0 title document title head body body ...
函式 常見函式
def fib n if n 1 return 1if n 2 return 1return fib n 1 fib n 2 def hannuo n,a,b,c n 表示有n個盤子 a 代表第乙個塔,開始的塔 b 代表第二個塔,過渡塔 c 代表第三個塔,目標塔 d.在 中n 2,這個分支可以不要,...
Lua 函式 函式
在lua中,函式是一種對語句和表示式進行抽象的主要機制。函式既可以完成某項特定的任務,也可以只做一些計算並返回結果。lua具有一項非常於總不同的特徵,允許函式返回多個結果 s,e string.find hello lua users lua print s,e 7 9 以lua編寫的函式同樣可以返...