shader.h 中宣告新函式:
private
:void
checkcompileerrors
(unsigned
int id, std::string type)
;
shader.cpp 中定義新函式:
void shader::
checkcompileerrors
(unsigned
int id, std::string type)
}else
}}
在著色器後加入函式排查錯誤(shader.cpp中):
unsigned
int vertex, fragment;
vertex =
glcreateshader
(gl_vertex_shader)
;glshadersource
(vertex,1,
&vertexsource,
null);
glcompileshader
(vertex)
;//檢查頂點著色器錯誤
checkcompileerrors
(vertex,
"vertex");
fragment =
glcreateshader
(gl_fragment_shader)
;glshadersource
(fragment,1,
&fragmentsource,
null);
glcompileshader
(fragment)
;//檢查片段著色器錯誤
checkcompileerrors
(fragment,
"fragment");
id =
glcreateprogram()
;glattachshader
(id, vertex)
;//依附到id著色器程式上
glattachshader
(id, fragment)
;gllinkprogram
(id)
;//檢查鏈結錯誤
checkcompileerrors
(id,
"program"
);
glgetprogramiv用法
glgetprograminfolog用法
glgetshaderinfolog用法同glgetprograminfolog一樣
OpenGL著色器程式解析 著色器基礎
部分內容 於 現代opengl渲染管線嚴重依賴著色器來處理傳入的資料。如果不使用著色器,那麼用opengl可以做到的事情可能只有清除視窗內容了,可見著色器對於opengl的重要性。在opengl 3.0版本以前 含該版本 或者如果你用到了相容模式 compatibility prof?ile 環境,...
Opengl(四) 著色器
1.opengl確保至少有16個包含4個元素的頂點屬性可用。2.不同著色器之間的資料傳輸,在傳送方中宣告乙個輸出,在接收方中宣告乙個同名輸入。3.uniform是全域性的,uniform會一直保留他的資料,直到他被重置或更新。4.設定uniform的方式 glint x glgetuniformlo...
著色器與OpenGL
現代opengl渲染管線嚴重依賴著色器來處理傳入的資料。如果不使用著色器,那麼用opengl可以做到的事情可能只有清除視窗內容了,可見著色器對於opengl的重要性。在opengl 3.0版本以前 含該版本 或者如果你用到了相容模式 compatibility prof?ile 環境,opengl還...