wglCreateContext GetLastError()0xc007001f

时间:2012-05-06 12:14:42

标签: c++ windows opengl

我有一个打开许多窗口的应用程序。有时,我得到wglCreateContext()返回0而GetLastError()返回0xc007001f。

仅在英特尔显卡上发生。

有人看到了吗?有人知道它是什么吗?

3 个答案:

答案 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);