opengl着色器编程的debug

来源:互联网 发布:ios 软件 目录 编辑:程序博客网 时间:2024/06/05 21:16

因为着色编程中很多东西都是在GPU上运行的不能像cpu那样可以实时的获得错误信息必须要用一些函数来获得的:



1.   检测 着色器编译错误的原因:

     

GLint result1;glGetShaderiv(vertShader, GL_COMPILE_STATUS, &result1);if (GL_FALSE == result1){fprintf(stderr, "Vertex shader compilation failed!\n");GLint logLen;glGetShaderiv(vertShader, GL_INFO_LOG_LENGTH, &logLen);if (logLen > 0){char *log = (char*)malloc(logLen);GLsizei written;glGetShaderInfoLog(vertShader, logLen, &written, log);fprintf(stderr, "shader log:    %s\n", log);free(log);}}


2.检测着色器的连接错误:


GLint result;      glGetShaderiv(programHandle, GL_COMPILE_STATUS, &result);      if (GL_FALSE == result)      {          fprintf(stderr, "vertex shader compilation failed\n");          GLint loglen;          glGetProgramiv(programHandle, GL_LINK_STATUS, &loglen);          if (loglen > 0)          {              char*log = (char*)malloc(loglen);              GLsizei written;              glGetProgramInfoLog(programHandle, loglen, &written, log);              fprintf(stderr, "shader log:%s\n", log);              free(log);          }      }      else      {           glUseProgram(programHandle);      }  


0 0