奇怪的GLSL片段着色器行为 - 运行时间

时间:2017-11-08 14:56:14

标签: c++ glsl fragment-shader

我有一个片段着色器,这让我很头疼,因为它有时会在相同的数据上快速运行,有时甚至会很慢。

此着色器由两个不同的类运行,使用相同的调用代码。 (曾经有不同的调用代码,但现在它是复制粘贴,以确保它不是这种行为的来源)。这些类中只有一个可以在任何单个应用程序运行中运行,我在单击“开始”之前选择它们。单击“停止”然后再次“启动”可能会导致不同的运行时间。

从头等舱调用时,它为我提供了每帧6到7毫秒的一致运行时间。 当从第二类调用时,运行时间要么与第一类相同(约30%的运行),要么慢约3~4倍(每帧18~24ms)。当它快速且速度慢时,没有模式。我可以启动我的应用程序,第一次运行可能很慢,第二次运行可能很快,反之亦然,或任何其他组合。

这些类都是各自工作流程的一部分。这两个工作流程在当前更改之前提供了一致除了这两个类之外没有其他任何东西被改变。当这两个类中的第一个更新时,它也没关系 - 两者都是。当我在第二类中进行类似的更改时,奇怪的行为开始了。目前,着色器及其调用代码在两个类中都是相同的。

我也注意到了:

  • 当此着色器工作较慢时,所有其他着色器也较慢(但不是3~4x,只有慢50%)。
  • 在后台运行Skype,呼叫同事并共享我的桌面对运行时间有非常积极的影响 - 着色器工作速度更快,约80%的运行。特别是当我的应用程序启动时,桌面共享已经在运行。
  • 禁用某些绘图也会产生一些影响,通过更慢地调整着色器(只有~10%的运行速度很快),甚至更慢(24~30ms)。

我不知道为什么会这样。我无法显示代码,我不期待确切的解决方案,但有人能指出我在某个方向,在哪里寻找错误或什么?

0 个答案:

没有答案
相关问题