我正在尝试修复MAC OS X 10.5上一个非常有趣的崩溃。
以下是代码:
CGLPixelFormatObj pixelFormatObj ;
GLint numPixelFormats ;
CGLPixelFormatAttribute attribs[] =
{
kCGLPFAFullScreen,
kCGLPFADisplayMask,
(CGLPixelFormatAttribute) 0, /* Display mask bit goes here */
(CGLPixelFormatAttribute) 0
} ;
if ( display == kCGNullDirectDisplay )
display = CGMainDisplayID();
attribs[2] = (CGLPixelFormatAttribute) CGDisplayIDToOpenGLDisplayMask(display);
/* Build a full-screen GL context */
CGError error = CGLChoosePixelFormat( attribs, &pixelFormatObj, &numPixelFormats );
if ( pixelFormatObj == NULL ) // No full screen context support
return NULL;
对CGLChoosePixelFormat()的调用给出“CGNoError”,但“pixelFormatObj”为NULL。
这段代码应该可以正常工作,因为我在网上看到了一个用于获取屏幕的引用(参考http://cocoadev.com/wiki/ScreenShotCode)。
在XCode的调试器下查看,attribs [2]变为“kCGLPFAAllRenderers”。
有没有人知道这可能会发生在什么条件下?以及如何克服这个问题?