glEnable会减慢速度吗?

时间:2013-12-05 03:49:59

标签: vb.net opengl opentk

我目前正在编写各种例程。我正在做的是在每个需要混合的例程中,我在开始时启用混合并在结束时禁用它。这是件坏事吗?

例如:

Public Sub DrawQuad()
        GL.Enable(EnableCap.Blend)
        GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha)

        GL.Begin()
        GL.End()

        GL.Disable(EnableCap.Blend)
End Sub

我有这个,但我可能会在同一次调用中调用500次,这意味着混合将启用/禁用500次。与仅启用一次,绘制500个四边形而不是禁用相比,这是否会极大地影响性能?

1 个答案:

答案 0 :(得分:1)

过早优化是万恶之源!

  • 正如bcrist在评论中指出的那样,如果您希望优化OpenGL代码,请学习可编程管道。它更快,更可定制,更少依赖于神奇的函数调用,并且通常更加棒极了。

  • 一般来说,首先优化您的大问题,然后具体化。

  • 找出问题答案的最佳方法是分析您的代码。 OpenGL驱动程序由硬件供应商为每个设备实现。是的,当您只调用一次时重复调用任何函数会导致性能下降,但是如何与代码的其余部分叠加?

带回家的观点确实令人讨厌 - 你的问题被误导了,“回答”无法解答你对glEnable来电的实际问题。在开始研究类似的小函数之前,你应该优化很多东西。

例如,一旦你完成设计的其余部分并且你意识到在你的程序中将glEnable的某些绘图程序组合在一起甚至是可能的,那么在没有招致的情况下更不可行比它消除的开销更多,然后你可能会考虑做些什么来摆脱它们。