c++ - OpenGL骨骼动画性能

标签 c++ optimization opengl skinning

我遇到了一些情况。

你看,当使用我的 renderMesh() 函数渲染我的模型时,游戏的帧率约为 30fps。当渲染到显示列表并运行它时,fps 达到大约 450fps。那是 1500% 的 yield 。我对此感到非常高兴,因为这意味着 OpenGL 不是延迟的原因,而是可以优化的功能。

但现在我想渲染蒙皮网格,所以我需要更新每帧的顶点位置,但仅此而已。所以运行 renderMesh() 是浪费时间,因为将所有面拼接在一起的开销,等等……是不必要的。我想缓存此数据,但由于顶点坐标不稳定,显示列表将无法工作。

最好的解决方案是什么(除了优化我的 renderMesh(),无论如何我都会这样做)。

最佳答案

我只能建议:

  1. 使用更少的顶点
  2. 在刚性组中移动你的顶点(或它们中的大部分)——这样每个组都可以是一个列表
  3. Vertex Buffer Objects

关于c++ - OpenGL骨骼动画性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4176894/

相关文章:

c++ - 基于条件然后三元运算符获取值的更快方法?

c++ - OpenGL 在屏幕上移动多边形

c++ - 为什么 SIGSEGV 的信号处理程序无法捕获我的 C++ 抛出异常?

c++ - 在类内部分配函数指针

java - Project Euler #5(可被 1 到 20 的所有数字整除的最小正数): Ways to Optimize? ~Java

c - 为什么 GCC -O2 和 -O3 优化会破坏这个程序?

c++ - 多少 STL 是太多了?

c++ - Qt 版本不显示图像

opengl - 如何对用三角形绘制的 "perfect cube"进行纹理处理?

c++ - 如何高效绘制单点