如何在cl-opengl中检查着色器和程序错误?

问题描述 投票:2回答:1

我正在学习opengl ES 2.0。我正在学习检查C中的错误,但我不知道在cl-opengl中是否使错误相同,因为我看不到任何类似gl:get-shaderivgl:get-programiv的函数,因此,如何使之相同下面的代码呢?但是在cl-opengl中。

// Check the compile status
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
if(!compiled) {
  GLint info
  Len = 0;
  glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &infoLen);
  if(infoLen > 1) {
    char* infoLog = malloc(sizeof(char) * infoLen);
    glGetShaderInfoLog(shader, infoLen, NULL, infoLog);
    esLogMessage("Error compiling shader:\n%s\n", infoLog);
    free(infoLog);
  }
  glDeleteShader(shader);
  return 0;
}


// Check the link status
glGetProgramiv(programObject, GL_LINK_STATUS, &linked);
if(!linked) {
  GLint infoLen = 0;
  glGetProgramiv(programObject, GL_INFO_LOG_LENGTH, &infoLen);
  if(infoLen > 1) {
    char* infoLog = malloc(sizeof(char) * infoLen);
    glGetProgramInfoLog(programObject, infoLen, NULL, infoLog);
    esLogMessage("Error linking program:\n%s\n", infoLog);
    free(infoLog);
  }
  glDeleteProgram(programObject);
  return FALSE;
}
common-lisp opengl-es-2.0
1个回答
2
投票

有两种获取方式:

第一:

(gl:get-shader shader :compile-status) 

或您可以使用第二个选项:

%gl:get-shader-iv

通过这种方式,您需要为&compiled手动分配一个指针。

© www.soinside.com 2019 - 2024. All rights reserved.