OpenGL 错误处理

166 阅读1分钟

使用的函数

GLenum glGetError() 此函数可以在其他函数调用之后使用,用于检查之前的调用是否发生了问题,如果有问题则返回最近一次执行的OpenGL函数问题错误码

代码

我们将错误检测定义成了一个库

头文件

#pragma once

#ifdef DEBUG
#define GL_CALL(func) func;checkError();
#else
#define GL_CALL(func) func;
#endif


void checkError();

cpp代码

#include <string>
#include <iostream>
#include <assert.h>
#include <glad/glad.h>

#include "checkError.h"

void checkError()
{
    GLenum errorCode = glGetError();

    std::string error = "";

    if (errorCode != GL_NO_ERROR)
    {
        switch (errorCode)
        {
        case GL_INVALID_ENUM:
            error = "GL_INVALID_ENUM";
            break;
        case GL_INVALID_VALUE:
            error = "GL_INVALID_VALUE";
            break;

        case GL_INVALID_OPERATION:
            error = "GL_INVALID_OPERATION";
            break;
        case GL_OUT_OF_MEMORY:
            error = "GL_OUT_OF_MEMORY";
            break;

        default:
            error = "UNKNOWN";
            break;
        }

        std::cout << error << std::endl;

        // 如果错误,程序停止
        assert(false);
    }
}