linux中的opengl屏幕外渲染速度较慢

linux中的opengl屏幕外渲染速度较慢,linux,opengl,rendering,gpu,render,Linux,Opengl,Rendering,Gpu,Render,我的opengl应用程序以大约110 fps的速度运行。我添加屏幕外渲染的那一刻,它的速度就降到了15 fps。我使用帧缓冲区对象和glReadPixels在屏幕外渲染。我在网上搜索过,发现GPU内存到CPU内存的数据传输很慢,反之亦然。 我有ATI移动Radeon™ X2300,具有128MB视频内存。 所以我的问题是 1) 有没有办法提高VRAM到CPU ram的数据传输速度? 2) 市场上有没有为提高读取速度而优化的GPU?问题不在于传输速度,而在于CPU和GPU之间的串行化。当您以这种方

我的opengl应用程序以大约110 fps的速度运行。我添加屏幕外渲染的那一刻,它的速度就降到了15 fps。我使用帧缓冲区对象和glReadPixels在屏幕外渲染。我在网上搜索过,发现GPU内存到CPU内存的数据传输很慢,反之亦然。 我有ATI移动Radeon™ X2300,具有128MB视频内存。
所以我的问题是
1) 有没有办法提高VRAM到CPU ram的数据传输速度?

2) 市场上有没有为提高读取速度而优化的GPU?

问题不在于传输速度,而在于CPU和GPU之间的串行化。当您以这种方式调用glReadPixels时,CPU将停止并等待GPU完成所有渲染,这是非常低效的,正如您已经注意到的


解决方案是使用PBO。您可以有N个PBO,并且在绑定PBO X的每个帧上(其中0否和否。您可以使用像素缓冲区对象并重新构造软件,以便在帧开始时启动像素传输操作,然后在GPU完成一些有用的工作后使用内存。您无法提高内存传输速度,只能将对图形管道其余部分的干扰降至最低通过更智能地执行传输。正如我昨天回答的一个类似问题一样,这归结为CPU/GPU同步;这是瓶颈,而不是太多的总线传输速率。Andon所说的+搜索PBO乒乓球和DMA异步传输。