着色器原始碼與程式執行時利用 glCompileShader() 编譯, 本文說明编譯着色器原始碼的除錯方式.

<<步驟>>

使用 glGetShaderiv() 與参數 GL_COMPILE_STATUS 取得着色器编譯结果.

使用 glGetShaderiv() 與参數 GL_INFO_LOG_LENGTH 取得錯誤訊息長度.

使用 glGetShaderInfoLog() 取得錯誤訊息.

<<原始碼>>

private static int loadShader(int type, String shaderCode) {
int shader;

shader = GLES20.glCreateShader(type);
GLES20.glShaderSource(shader, shaderCode);
GLES20.glCompileShader(shader);

// Check shader compile status
int compileStatus[] = {GLES20.GL_FALSE};
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compileStatus, 0);
if(compileStatus[0] == GLES20.GL_FALSE) {
int logSize[] = {0};
GLES20.glGetShaderiv(shader, GLES20.GL_INFO_LOG_LENGTH, logSize, 0);
if(logSize[0] > 0) {
String errorLog = GLES20.glGetShaderInfoLog(shader);
Log.d(SampleGLES20Texture.class.getName() , errorLog);
}
}
return shader;
}

<<完整範例>>

QR SampleOpenGL  

(完)

 

文章標籤
創作者介紹
創作者 版大 的頭像
版大

嵌入式系統

版大 發表在 痞客邦 留言(0) 人氣()