OpenGL ES 2.0 glVertexAttribPointer - 缓存冗余调用

时间:2012-04-24 09:51:11

标签: android c++ ios opengl-es

我正在分析我的iOS和Android应用程序,并意识到每帧有很多冗余的glVertexAttribPointer调用。我想出了一个缓存这些状态的策略,只在需要时调用该方法。

我认为只有在发生以下情况时才需要调用glVertexAttribPointer:

  • 尚未设置该属性
  • 绑定了新的着色器(可能使属性位置无效)
  • 顶点声明更改(可能使偏移或类型无效)

在测试之后不出所料,没有冗余的glVertexAttribPointer调用。但是,由于渲染不再正常,因此我的逻辑必定存在缺陷。我认为我的缓存策略过于热心,我不会像往常一样经常重新调用glVertexAttribPointer。然后,每当我们的材料发生变化时(即每当渲染状态改变时),我都尝试使缓存无效。这修复了渲染,但返回了冗余调用(虽然比以前少了)。

我是否在初始缓存策略的正确轨道上,是否有人可以帮助我确定缓存应该失效的其他情况?

0 个答案:

没有答案