在使用GL_TIME_ELAPSED和GL_TIMESTAMP查询OpenGL中的时间之间有什么区别

时间:2014-06-27 07:23:48

标签: opengl glsl opengl-4

它们都可以用来获得以纳秒为单位的时间。 前者使用scoped glBeginQuery / glEndQuery。这有区别吗?

2 个答案:

答案 0 :(得分:3)

  

这有区别吗?

你说这好像是一些细微的差别。

GL_TIME_ELAPSED提供了处理query's scope中命令所花费的GPU时间(即:glBegin/End)。 GL_TIMESTAMP不是任何东西的计数。它只需要一个时间,以纳秒为单位,因为......好吧,有些东西。开始时间是实现定义的,但它总是在增加(除非它溢出)。

换句话说,GL_TIME_ELAPSED就像一个秒表:从你开始和停止之间的时间。这是一个三角洲。 GL_TIMESTAMP就像看时钟一样:它总是在增加。这是一个绝对的时间,但它与依赖于实现的东西相关。

答案 1 :(得分:-1)

除了正如您所指出的使用glBeginQuery() / glEndQuery()glQueryCounter()之间的差异外,它们在功能上是相同的。

请参阅:ARB_timer_query specification的示例部分。