OpenGL(4)著色器 錯誤排查

2021-10-09 00:23:20 字數 1377 閱讀 5553

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還...