我正在尝试修复 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;
对 CGLChosePixelFormat() 的调用给出“CGNoError”,但“pixelFormatObj”为 NULL。
这段代码应该可以工作,因为我在网上看到了对它的引用以获取屏幕截图(参考http://cocoadev.com/wiki/ScreenShotCode)。
在 XCode 中的调试器下查看,attribs[2] 变为“kCGLPFAAllRenderers”。
有人知道这可能发生的条件吗?以及如何克服这一点?