从十六进制值返回 OpenGL #define 错误名称的函数
Function to return OpenGL #define error name from its hexadecimal value
我最近一直在学习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,如果这有什么变化的话。
是否可以在C++中创建一个通过输入其值返回定义名称的函数?
是的,它是。
除非有人已经这样做了,否则你必须在应用程序代码中这样做。
例如
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];
}
除非库提供或您自己编写的函数将数字错误转换为字符串表示形式,否则这是不可能的。
在运行时,无法将宏的值(#define
(转换为宏的名称。
但是完全可以编写一个函数,该函数接受错误代码,在表中查找它,并为每个错误返回一些字符串(您编写的(。
相关文章:
- "error: no matching function for call to"构造函数错误
- 为什么类中的ostringstream类型的成员会导致";调用隐含删除复制构造函数";错误
- 尝试将unique_ptrs推送到向量时使用纯虚拟函数错误
- C++ OpenCV 卡尔曼滤波器构造函数错误
- C++:用户定义的显式类型转换函数错误
- C++ 合并字符串以'system'函数错误
- C++ wmain 函数错误时使用 Unicode
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- C++ 中常量属性的初始化构造函数错误
- 线程 std::调用未知类型,无法专门化函数错误
- 表单显示对话框函数错误,并且不执行下面的语句
- 函数错误 C2059:语法错误:'>'不起作用
- STL向量上出现奇怪的复制构造函数错误
- C++ Visual Studio 重载函数错误:没有重载函数的实例与指定的类型匹配
- C++引用已删除函数错误
- 为什么通过带有文字编号的引用调用会出现"无匹配函数"错误?
- C++ 乘法定义的构造函数错误消息似乎错误
- 在 c++ 代码中将数组传递给函数错误
- FFMPEG avcodec_decode_video2函数错误代码
- 为什么我会收到转换函数错误