我最近一直在学习OpenGL,并且正在搜索有关错误处理的信息。我学会了使用glGetError
设置错误标志,并创建了一个打印其十六进制值的函数。相关的C++代码如下所示:
GLClearError();
glDrawElements(GL_TRIANGLES, 6, GL_INT, nullptr);
GLCheckError();
故意写GL_INT。
GLClearError()
仅清除错误标志,而GlCheckError()
打印glDrawElements
产生的错误。我得到
500
作为输出。我知道我可以(在我的情况下,因为我使用GLEW)转到glew.h并使用该号码搜索错误。在这种情况下,错误是GL_INVALID_ENUM
。这是一个编译器定义;我的问题如下:是否可以在C++中创建一个通过输入其值返回定义名称的函数?我使用C++ 11,OpenGL 4.6和GLEW 2.1,如果那会改变什么的话。
最佳答案
is it possible to create in C++ a function that returns the definition name by entering its value?
是的。
除非有人已经做过,否则您将必须在应用程序代码中完成它。
例如。
enum MyEnum { ENUM_VALUE_1, ENUM_VALUE_2, ENUM_VALUE_3, ... };
std::string getEnumName(MyEnum e)
{
static std::map<MyEnum, std::string> nameMap =
{
{ENUM_VALUE_1, "ENUM_VALUE_1"},
{ENUM_VALUE_2, "ENUM_VALUE_2"},
{ENUM_VALUE_3, "ENUM_VALUE_3"},
...
};
return nameMap[e];
}
关于c++ - 从十六进制值返回OpenGL #define错误名称的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55853412/