glGetShaderiv()函式有什麼用?

2022-02-03 01:18:22 字數 1844 閱讀 6322

部分內容**自

今天學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編寫的函式同樣可以返...