我正在尝试将一个OSX的OpenGL项目更新到OpenGL 4.1。我的着色器使用#version 410
,一切都工作得很好,并且非常流畅。今天我注意到有一个新的NSOpenGLPFAOpenGLProfile
值用于4.1版本,所以我将像素格式配置文件从NSOpenGLProfileVersion3_2Core
更新为NSOpenGLProfileVersion4_1Core
,但现在渲染变得极其缓慢。我的像素格式初始化代码如下:
NSOpenGLPixelFormatAttribute attrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFADepthSize, 24,
NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core,
0
};
NSOpenGLPixelFormat *pf =
[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs];
有人知道这为什么会慢这么多吗?我是否需要更新其他内容?
NSOpenGLProfileVersion3_2Core
,人们认为该常量提供了平台支持的最高版本上下文。这似乎几乎是给你参考软件渲染路径而不是硬件。 - Andon M. Colemannsgl_context.m
的第131行遇到了一个��处理器指令,它只适用于OS X 10.10。所以看起来这是一个特定于10.10的改变。 - Andon M. ColemanGL_VENDOR
或GL_RENDERER
的glGetString()
。我相信如果你得到了完全的回退,这些值会发生变化。否则,对于部分回退,我认为OpenGL Profiler中曾经有一个选项可以显示回退。你的GPU是否在https://developer.apple.com/opengl/capabilities/上被列为支持4.1? - Reto KoradiGL_VENDOR
报告Apple Computer, Inc.
,而GL_RENDERER
报告Apple Software Renderer
用于 4.1 像素格式配置文件。当使用NSOpenGLProfileVersion3_2Core
时,GL_MAJOR_VERSION
/GL_MINOR_VERSION
报告为 4.1,并且我在我的着色器中使用 #version 410,正如我在问题开头所说的那样。我的显卡确实支持 4.1。通过 Apple 论坛确认这在 10.10 中已修复(我使用的是 10.9.5)。 - Mike Hays