我尝试创建一个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
提前谢谢
托马斯
答案 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或类似的。