kCGLRendererGenericFloatID和kCGLRendererAppleSWID有什么区别?
该文档似乎非常相似,只是从10.9起才支持kCGLRendererAppleSWID。
如果您想知道系统上可用的渲染器,可以使用如下代码:
NSOpenGLPixelFormatAttribute attrs[] = {
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion3_2Core, // optional
0
};
NSOpenGLPixelFormat* pf = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
for (int i = 0; i < pf.numberOfVirtualScreens; i++)
{
GLint val;
[pf getValues:&val forAttribute:NSOpenGLPFARendererID forVirtualScreen:i];
val &= kCGLRendererIDMatchingMask;
printf("renderer 0x%08x\n", val);
}
[可能只有kCGLRendererGenericFloatID
或kCGLRendererAppleSWID
中的一个可用。如果两者均可用,则可以使用相同的-getValues:forAttribute:forVirtualScreen:
方法查询该虚拟屏幕的其他属性,以尝试区分它们。您还可以根据OpenGL Programming Guide for Mac: Determining the OpenGL Capabilities Supported by the Renderer创建一个上下文并将其设为最新,然后查询其OpenGL功能和限制。
不幸的是,Apple的OpenGL框架/驱动程序工程师可能是唯一可以肯定地回答这个问题的人,但这是我已经能够收集到的一些信息。
<<<< [Mac OS X上的OpenGL编程:体系结构,性能和集成