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

Common lisp 如何在cl opengl中检查着色器和程序错误?,common-lisp,opengl-es-2.0,Common Lisp,Opengl Es 2.0,我正在学习OpenGLES2.0。我正在学习在C中检查错误,但我不知道如何在cl opengl中进行同样的检查,因为我没有看到任何像gl:get shaderiv或gl:get programiv这样的函数,那么,如何进行与下面代码相同的检查呢?但是在cl-opengl中 // Check the compile status glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); if(!compiled) { GLint info

我正在学习OpenGLES2.0。我正在学习在C中检查错误,但我不知道如何在cl opengl中进行同样的检查,因为我没有看到任何像
gl:get shaderiv
gl: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;
}

有两种方法可以获得它:

第一:

(gl:获取着色器:编译状态)
或者,您可以使用第二个选项:

%gl:获取着色器iv
这样,您需要为&compiled手动分配一个指针