[kCGLRendererGenericFloatID vs kCGLRendererAppleSWID

问题描述 投票:1回答:3

kCGLRendererGenericFloatID和kCGLRendererAppleSWID有什么区别?

该文档似乎非常相似,只是从10.9起才支持kCGLRendererAppleSWID。

macos cocoa opengl gpu osx-mavericks
3个回答
1
投票

如果您想知道系统上可用的渲染器,可以使用如下代码:

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);
}

[可能只有kCGLRendererGenericFloatIDkCGLRendererAppleSWID中的一个可用。如果两者均可用,则可以使用相同的-getValues:forAttribute:forVirtualScreen:方法查询该虚拟屏幕的其他属性,以尝试区分它们。您还可以根据OpenGL Programming Guide for Mac: Determining the OpenGL Capabilities Supported by the Renderer创建一个上下文并将其设为最新,然后查询其OpenGL功能和限制。


0
投票

不幸的是,Apple的OpenGL框架/驱动程序工程师可能是唯一可以肯定地回答这个问题的人,但这是我已经能够收集到的一些信息。


0
投票

<<<< [Mac OS X上的OpenGL编程:体系结构,性能和集成

© www.soinside.com 2019 - 2024. All rights reserved.