第四十章 调试总结

调试没有文本输出控制台,GLSL中没有断点,无法检测GPU的运行状态。
glGetError函数可以查询错误标记,会检测错误标记集,在OpenGL确实出错的时候返回一个错误值,原型如下:
GLenum glGetError();————要么会返回错误标记之一,要么返回无错误。
GL_NO_ERROR 0 自上次调用glGetError以来没有错误
GL_INVALID_ENUM 1280 枚举参数不合法
GL_INVALID_VALUE 1281 值参数不合法
GL_INVALID_OPERATION 1282 一个指令的状态对指令的参数不合法
GL_STACK_OVERFLOW 1283 压栈操作造成栈上溢(Overflow)
GL_STACK_UNDERFLOW 1284 弹栈操作时栈在最低点(译注:即栈下溢(Underflow))
GL_OUT_OF_MEMORY 1285 内存调用操作无法调用(足够的)内存
GL_INVALID_FRAMEBUFFER_OPERATION 1286 读取或写入一个不完整的帧缓冲
补充:
当一个错误标记被返回的时候,将不会报告其它的错误标记。换句话说,当glGetError被调用的时候,它会清除所有的错误标记(在分布式系统上只会清除一个,见下面的注释)。
这也就是说如果你在每一帧之后调用glGetError一次,它返回一个错误,但你不能确定这就是唯一的错误,并且错误的来源可能在这一帧的任意地方。
举例:
glBindTexture(GL_TEXTURE_2D, tex);
std::cout << glGetError() << std::endl; // 返回 0 (无错误)

你可能感兴趣的:(OPGENGL,计算机视觉)