macos - kCGLRendererGenericFloatID 与 kCGLRendererAppleSWID

标签 macos cocoa opengl gpu osx-mavericks

kCGLRendererGenericFloatID 和 kCGLRendererAppleSWID 有什么区别?

文档看起来非常相似,只是 kCGLRendererAppleSWID 仅从 10.9 开始受支持。

最佳答案

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

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 功能和限制,如 OpenGL Programming Guide for Mac: Determining the OpenGL Capabilities Supported by the Renderer 所示。 .

关于macos - kCGLRendererGenericFloatID 与 kCGLRendererAppleSWID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22066203/

相关文章:

swift - 将.xib文件内TableCellView中项目的outlet设置为自定义NSTableCellView子类

swift - MacOS Quartz Event Tap 监听错误事件

c - opengl交错vbo不渲染到屏幕

c++ - opengl 程序在 glBegin(GL_QUADS) 上崩溃

objective-c - 如何在 OSX 中获取动态变化的 NSTableView

c++ - 寻找立方体顶点的优雅方式

python - 如何使用 MacFSEvents 使用 Ctrl-C 退出 Python 程序

objective-c - OpenCL 到 OpenGL 纹理问题

cocoa - 当我的对象销毁时,我需要删除观察者吗?

objective-c - 从 NSTableView 拖放到 NSImageView