c++ - 从十六进制值返回OpenGL #define错误名称的函数

标签 c++ opengl

我最近一直在学习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/

相关文章:

c++ - Objective-C++内存问题

c++ - Qt的信号/插槽临时连接

c - opengl:关于 glutMainLoop() 的问题

c++ - glGetTexLevelParameter 问题

c++ - 模板化链接不适用于 -O2,但适用于 -O0

c++ - 在 C++ 中强制最后破坏某些东西

c++ - QT中如何使QMenu Item可勾选

java - OpenGL 顶点着色器不工作

c++ - OpenGL - 阴影贴图/深度贴图给出奇怪的结果

c - OpenGL:按下显示窗口时形状改变位置