OpenGL中Debug


glGetError

兼容所有版本,使用方法简单

调用后只返回一个任意的错误标志,所以要循环调用,而且使用麻烦,要在所有要检查的前后分别打上下面两段代码ww

static void GLClearError()//查错
{
	while (glGetError() != GL_NO_ERROR);
}

static void GLCheckError()//输出错误信息
{
	while (GLenum error =  glGetError())
	{
		std::cout << "[OpenGL Error!](" << error << ")" << std::endl;
	}
}

且OpenGl用十六进制定义了他所有的错误码,需要把拿到的错误码转换成十六进制,然后去glew头文件里搜


断言改进版
#define ASSERT(x) if(!(x)) __debugbreak();

static void GLClearError()//查错
{
	while (glGetError() != GL_NO_ERROR);
}

static bool GLLogCall()
{
	while (GLenum error =  glGetError())
	{
		std::cout << "[OpenGL Error!](" << error << ")" << std::endl;
		return false;
	}
	return true;
}

4.3之后,glMessageCallback

允许我们指定一个指向OpenGL的函数指针,OpenGL会调用我们的那个函数

比glGetError好用多了awa~,不需要一直问(

错误信息也比glGetError详细


文章作者: Ayanami
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Ayanami !
评论
  目录