为什么CGLFlushDrawable这么慢? (我使用的是VBOs)

时间:2012-05-08 22:01:05

标签: opengl buffer flush frame-rate

我的申请详情

继续运行:Macbook pro 4GB RAM,ATI Radeon X1600 128MB VRAM,Opengl版本:2.1 ATI-7.0.52

使用垂直同步(通过CVDisplay):是

编程语言:使用FFI到Opengl的Lisp(Lispworks)

像素格式信息

  • ns-open-gl-pfa-depth-size 32
  • ns-open-gl-pfa-sample-buffers 1
  • ns-open-gl-pfa-samples 6
  • ns-open-gl-pfa-accelerated 1
  • ns-open-gl-pfa-no-recovery 1
  • ns-open-gl-pfa-backing-store 0
  • ns-open-gl-pfa-virtual-screen-count 1
布尔attribs的

[1 = YES,0 = NO]

我的应用程序中包含以下网格:

14个静态网格物体(不会改变)。我已经为静态绘制类型的每个网格定义了一个VBO。

2个动态网格(每帧更改)。我已经为每个网格定义了一个带有流绘制类型的VBO。

对于这些动态网格,每帧我用空指针做一个绑定缓冲区数据,然后映射缓冲区,更新映射缓冲区并取消映射缓冲区。

当我运行应用程序并使用Opengl分析器检查时:它显示以下内容(统计视图):

CGLFlushDrawable:

  • 平均时间(微秒): 52990.63 = 52.990 ms
  • %GL时间: 98.55
  • %App时间: 43.96

难怪我的FPS很差,大约6-7 FPS。

优化CGLFlushDrawable的方法是什么,因为我只调用flushBuffer,而后者又调用CGLFlushBuffer,我相信。

1 个答案:

答案 0 :(得分:1)

嗯,事实证明 我的ATI Radeon X1600显卡存在问题

没有任何改变,当我在另一个更新的13“Macbook Pro上测试相同的代码时,它具有带有384MB DDR3 SDRAM的Intel HD Graphics 3000,该应用程序可正常运行 考虑到我拥有的动态网格,大约30 FPS,这是我所期望的。

此外, 在CGLFlushDrawable 中没有任何瓶颈,就像我以前的情况一样 MBP。此外,VBO分配后可用的VRAM中的存储量保持不变 (再次是我所期待的)。这不是我的旧MBP上发生的事情。

最后,我的MBP显示器已经崩溃(虽然不够规律),外部LCD显示器也不能正常工作,这表明我的显卡存在问题。

@Brad,感谢您的所有投入。