显示列表应该是cpu密集型吗?

时间:2010-06-28 03:02:24

标签: c++ c opengl

我的应用程序正在渲染大约100个显示列表/秒。虽然我确实认为这对于gpu非常密集,但我不明白为什么它会使我的cpu达到80-90%。是否显示存储在显卡中但不存储在系统内存中的列表?我需要做些什么来减少这种疯狂的CPU使用?我的对象永远不会改变,所以这就是我使用DL而不是VBO的原因。但我真正关心的是cpu的使用以及我如何减少它。我每秒渲染〜60(或试图)帧。

由于

3 个答案:

答案 0 :(得分:1)

如果您指的是these,那么我怀疑瓶颈将与CPU有关。所有这些文件的解码都在CPU上完成。当然,每个单独的命令可能会导致显卡的几个命令,这些命令会快速执行,但是CPU在执行解码任务时卡住了。

答案 1 :(得分:0)

您可能已禁用VSYNC。在这种情况下,您的CPU将生成尽可能多的每秒帧数。当然,大多数都会被浪费,因为你的显示器每秒不能更新100次。

启用VSYNC并再次检查CPU使用率(和帧速率)。

答案 2 :(得分:0)

虽然显示列表是在GPU上编译的,但这并不意味着cpu上没有一些工作要求(如果不是直接在你的代码中那么可能在驱动程序中)来实际指定要在gpu上调用的显示列表

如果您想知道cpu时间花在哪里,请抓住一个分析器并启动一个调用图采样测试。你很快就会发现cpu时间花在哪里。