在连接到不同GPU的监视器上渲染时会发生什么

时间:2018-03-20 10:03:22

标签: macos opengl

我的MAC有多个GPU,辅助显示器连接到外部GPU。在监视器之间切换我的应用程序时,我发现OpenGL上下文的渲染器已更新,以显示当前监视器的渲染器。但是,我还可以在NSOpenGLPixelFormatAttribute中为我的应用程序指定要选择的渲染器。在指定渲染器时,无论我将应用程序切换到何处,都始终使用指定的渲染器。

因此,当我尝试绘制连接到与指定为首选渲染器的GPU不同的GPU的监视器时,最终渲染是如何进行的? 是这样的,它在上下文的GPU上呈现,然后将其复制到连接到显示器的GPU上?

1 个答案:

答案 0 :(得分:2)

  

是不是,它会在制作上下文的GPU上呈现,然后将其复制到连接到显示器的GPU上?

是。在适用于Mac的OpenGL编程指南的discussion of virtual screens中,它说当窗口跨越由不同GPU驱动的两个显示器时会发生什么:

  

当窗口在多个虚拟屏幕之间分割时,帧缓冲区完全由渲染器光栅化,该渲染器驱动包含窗口最大部分的屏幕。通过复制光栅化图像来绘制其他虚拟屏幕上窗口的区域。

(请注意,只有当系统偏好设置>任务控制>"显示器有单独的空格"关闭时,才会发生这种分割窗口。)

我希望你的情况也适用同样的事情。