多显示器上的OpenGL

3

我正在使用多个NSOpenGLViews。所有的视图都设置为一个NSWindowcontentView,这个窗口显示在它自己的屏幕上。所有的NSOpenGLViews都调用了Scene类中声明的方法-(void)render:(NSOpenGLView *)sender;。这个类会绘制所有的顶点。

一切运行良好,但性能很差:有一个显示器时,一切正常(大约500帧/秒)。当我添加一个显示器时,速度极慢(大约20帧/秒)。

有没有可能加快速度?


我不确定这是否有效,但在绘制之前尝试在渲染方法的开头放置[sender.openGLContext makeCurrentContext] - user1139069
那个方法没起作用,但我在我的OpenGL代码中发现了一个错误(忘记了glEnd()),现在一切都很好。另一方面,性能非常糟糕。 - Fatso
你能详细说明一下你正在渲染的窗口和视口数量吗?你的第二个显示器是在同一块显卡上还是不同的GPU上? - holtavolt
2个窗口和2个视口,第二个显示器在同一块显卡上。 - Fatso
你需要两个视口有什么原因吗?你是想显示一个连续同步的显示吗?如果是的话,可以看一下CGLX(http://vis.ucsd.edu/~cglx/)或者早期版本的Chromium(不是浏览器 - http://chromium.sourceforge.net/doc/LLNLcopy.html)。 - platinummonkey
我对openGl不是很有经验,但我正在使用两个窗口,每个屏幕上都有一个。每个窗口都有一个NSOpenGLView和自己的视口。这样做是错误的吗? - Fatso
1个回答

1

你是否可能受到填充率的限制?GPU非常出色,但像素推送是你可以要求它们做的最慢的事情。如果在任何屏幕上都不绘制时帧速率是多少?

另一件可能发生的事情是你正在获得软件仿真。如果您的卡不支持某些操作,则可能会发生这种情况。


我很快会回复你的,但我需要先找到第二个显示器(我刚搬到另一个城镇,我的电视还在家里)。 - Fatso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接