我有一个打开许多窗口的应用程序。有时,我得到wglCreateContext()返回0而GetLastError()返回0xc007001f。
仅在英特尔显卡上发生。
有人看到了吗?有人知道它是什么吗?
答案 0 :(得分:3)
您可以将错误代码分解为其部分。 0xC使其成为致命错误,007产生设施代码7,即winapi。这使得最后四位数的Windows错误31:
//
// MessageId: ERROR_GEN_FAILURE
//
// MessageText:
//
// A device attached to the system is not functioning.
//
#define ERROR_GEN_FAILURE 31L
这使得它成为一个非常基本的设备驱动程序类型的问题,假设您将正确的设备上下文句柄传递给wglCreateContext()。通常需要更新视频驱动程序并确保安装正确类型的OpenGL驱动程序的类型。当然,没有什么可以解决的问题,这是用户需要解决的问题。
答案 1 :(得分:0)
我认为错误0xc007001f是SetPixelFormat()
失败的时候。这意味着,您尝试使用该卡不支持的像素格式的某些功能。如果我没弄错的话,英特尔显卡几乎不支持OpenGL(只有[编辑:2.1])。
答案 2 :(得分:0)
您还可以使用FormatMessage获取错误描述字符串:
DWORD err = GetLastError();
char* msg;
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, err, 0, (LPCSTR)&msg, 0, 0);
MessageBoxA(0, msg, "Error", 0);
LocalFree(msg);