OpenGL上下文创建期间的未记录错误

时间:2014-01-12 12:10:32

标签: c++ windows opengl nvidia

我正在使用wglCreateContextAttribsARB()函数创建一个带有以下参数的OGL上下文:

const int contextAttrib[] = {
    WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
    WGL_CONTEXT_MINOR_VERSION_ARB, 2,
    WGL_CONTEXT_PROFILE_MASK_ARB, WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
#ifdef _DEBUG
    WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB | WGL_CONTEXT_DEBUG_BIT_ARB,
#else
    WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
#endif
    0
};

mContext = wglCreateContextAttribsARB_local(mhDC, shareLists, contextAttrib);

不幸的是,当我尝试创建第二个上下文与先前成功创建的某个上下文(shareLists参数)共享数据时,我收到错误 - 0xc00710dd或3221688541(由GetLastError()返回)。谷歌搜索只给出了一个结果:http://software.intel.com/en-us/forums/topic/303629我在Windows 8.1上使用GeForce 680 GTX和最新的驱动程序,所以线程对我们来说并不多。

一个奇怪的是这个错误的再现方式。当我创建与A共享数据的上下文A和上下文B,然后C与A共享数据时,只有当B在创建C(失败)之前呈现某些内容时才会发生错误。

有没有人知道可能会发生什么?

1 个答案:

答案 0 :(得分:5)

此错误可能是HRESULT / SCODE,这是一个复合值。可以使用宏访问每个部分(严重性,设施,代码):

HRESULT_SEVERITY(0xC00710DD) = 0xC0000000 //ERROR_SEVERITY_ERROR  
HRESULT_FACILITY(0xC00710DD) = 7          //FACILITY_WIN32
HRESULT_CODE(0xC00710DD)     = 4317       //ERROR_INVALID_OPERATION