SetPixelFormat返回0错误代码3221684230(C0070006)

时间:2016-04-22 13:03:17

标签: c++ opengl

我尝试创建一个openGL上下文。 如果我在Radeon GPU上启动它,它工作正常......但是在我测试它的每一张nvidia卡上,它崩溃了。

m_hWindowHandleToDevice = GetDC(hWnd);

m_PixelFormat = {
    sizeof(PIXELFORMATDESCRIPTOR),
    1,
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,    //Flags
    PFD_TYPE_RGBA,              //The kind of framebuffer. RGBA or palette.
    32,                         //Colordepth of the framebuffer.
    0, 0, 0, 0, 0, 0,
    0,
    0,
    0,
    0, 0, 0, 0,
    24,                         //Number of bits for the depthbuffer
    8,                          //Number of bits for the stencilbuffer
    0,                          //Number of Aux buffers in the framebuffer.
    PFD_MAIN_PLANE,
    0,
    0, 0, 0
};

int PixelFormatHandle = ChoosePixelFormat(m_hWindowHandleToDevice, &m_PixelFormat);
BOOL bPixelFormatOK = SetPixelFormat(m_hWindowHandleToDevice, PixelFormatHandle, &m_PixelFormat);
DWORD nLastError = GetLastError();
m_hOpenGLContext = wglCreateContext(m_hWindowHandleToDevice);
nLastError = GetLastError();

变量是:

PixelFormatHandle = 9

bPixelFormatOK = 0

nLastError (first time) = 3221684230 

nLastError (at the end) = 2000   //ERROR_INVALID_PIXEL_FORMAT

m_hOpenGLContext = 0

m_hWindowHandleToDevice = 670115fb //so it is set...

所有驱动程序都已更新,我正在使用:

NVIDIA NVS 3100M / not working

NVIDIA gtx 780 / not working

AMD Radeon R7 M370 / is working

Intel(R) HD Graphics 530 / is working

提前谢谢

托马斯

1 个答案:

答案 0 :(得分:2)

MSDN说 <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html lang="en" class="no-js"> <!--some meta tags--> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <!--[if lte IE 8]><script src="js/libs/selectivizr.js"></script><![endif]--> <!--link my style sheet here --> <!--[if lte IE 8]> <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Roboto" /> <![endif]--> <!--my other link and scripts here --> 没有alpha(虽然我经常看到32个)...

cColorBits失败(假为FALSE)。它从那里开始下降。使用SetPixelFormat()检查Chosen PixelFormat,以确保您有所了解。

您只能设置DescribePixelFormat一次。确保你这样做。 你在哪里打电话给这一切?我认为最安全的地方是WM_CREATE处理程序。

尝试这个传奇的旧事物:Nehe OpenGL Window(最后有源)。 即使这不起作用也肯定会很奇怪。或者你知道:不要试图太聪明并使用GLFW或类似的。