Opengl es 基于OpenGL的动画/可缩放2D UI渲染优化策略
我已经为我的应用程序的UI构建了一个基于场景图的渲染系统(如果你好奇的话)。该应用程序的UI是程序化的,而且很多都是动画的。预渲染图像很少 目前,它在mipmapped纹理中缓存不变的可绘制组。我使用mipmap是因为UI是可缩放的。总的来说,这是一个巨大的性能胜利,但也有几个缺点:Opengl es 基于OpenGL的动画/可缩放2D UI渲染优化策略,opengl-es,2d,gpu,mipmaps,Opengl Es,2d,Gpu,Mipmaps,我已经为我的应用程序的UI构建了一个基于场景图的渲染系统(如果你好奇的话)。该应用程序的UI是程序化的,而且很多都是动画的。预渲染图像很少 目前,它在mipmapped纹理中缓存不变的可绘制组。我使用mipmap是因为UI是可缩放的。总的来说,这是一个巨大的性能胜利,但也有几个缺点: 构建mipmap(通过glGenerateMipmap)需要时间,当UI的一部分从动画变为静态时,会降低帧速率 纹理缓存几何体与非缓存几何体之间的视觉差异,导致轻微闪烁。(可能可以通过更巧妙地使用路径渲染代码来解决
路径渲染是否基于绘制GL\U线?缩小时是否简化了几何体?如中所示,对象确实具有LOD?感谢您的回复!所有路径均使用GL_三角形_带。我没有任何详细资料。作为测试,我尝试减少路径细分细节,确实在一定程度上减少了GPU渲染时间,但没有纹理缓存,我的CPU受到限制。因此,一旦我将CPU端负担降低了一点,动态LOD将是一个很好的实现方法:-)您的CPU端负担到底是什么?它正在变换这些顶点吗?或者只是将它们按帧发送到GPU?顶点存储在VBO中(在其可绘制的本地坐标中),并在顶点着色器中进行变换。我认为我的CPU方面的负担很大程度上是由于OpenGL调用的数量(上图中每帧780个调用glDrawArrays),但我可能做了一些错误的事情,需要CPU等待GPU(仍在调查)。再次感谢你的帮助!您是针对一个VBO发出多个调用,还是有多个VBO?在完成glDrawArrays调用序列之前,您是否在任何地方调用glFlush/glFinish?