【问题标题】:OpenGL drawing timeOpenGL绘制时间
【发布时间】:2011-09-10 02:08:08
【问题描述】:

OpenGL 何时真正绘制我指示它绘制的东西?是调用特定的绘图函数还是缓冲区交换?
我想知道这一点,看看我是否可以做这样的事情:

SomeTimer Timer;

Timer.Start();
glDrawArrays(...);
long time = Timer.Stop();

查看哪些绘图花费的时间最多并在此基础上进行优化。
如果重要的话:我只在 2d 中绘制,没有模板/深度或任何其他缓冲测试。

【问题讨论】:

    标签: opengl


    【解决方案1】:

    该代码将不起作用。根据定义,OpenGL 命令被假定为异步行为。 GL 命令需要在完成之前完全写入或读取任何参数。但除此之外,所有赌注都没有了。

    对任何单独的glDraw* 调用进行计时只会告诉您完成该函数调用需要多长时间。它没有说明渲染完成需要多长时间。

    more thorough discussion of this subject is available

    好处是您可以定时渲染,但您必须按照 OpenGL 的方式进行。 ARB_timer_query 允许您准确地做到这一点:计算 OpenGL 命令需要多长时间才能完成,而不仅仅是提供给 OpenGL。这个扩展是 OpenGL 3.3 的核心,它可以广泛用于各种级别的硬件。几乎所有仍受其所有者支持的 GPU 都实现了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多