我正在分析我的iOS和Android应用程序,并意识到每帧有很多冗余的glVertexAttribPointer调用。我想出了一个缓存这些状态的策略,只在需要时调用该方法。
我认为只有在发生以下情况时才需要调用glVertexAttribPointer:
在测试之后不出所料,没有冗余的glVertexAttribPointer调用。但是,由于渲染不再正常,因此我的逻辑必定存在缺陷。我认为我的缓存策略过于热心,我不会像往常一样经常重新调用glVertexAttribPointer。然后,每当我们的材料发生变化时(即每当渲染状态改变时),我都尝试使缓存无效。这修复了渲染,但返回了冗余调用(虽然比以前少了)。
我是否在初始缓存策略的正确轨道上,是否有人可以帮助我确定缓存应该失效的其他情况?