Q1:我有一个 3D 模型,它有一个顶点数组。每个元素都有 x、y 和 z 值。现在我创建了一个动态 vbo 缓冲区来在 OpenGL 中渲染这个数组。问题是我必须更新每一帧的所有顶点[这取决于一些逻辑。但可以肯定的是,这不是一个简单的转换:我的意思是它不能对所有顶点使用单个转换矩阵来完成。现在对于每一帧,我映射 vbo 缓冲区,然后更新数据并取消映射,然后渲染它。更新在 for 循环中完成。现在我想知道有没有更快的方法来做到这一点?
几点:我必须更新所有顶点。这是我的要求,我不能使用顶点子集。
Q2:我必须重新计算法线,因为顶点已经更新。为了平滑着色,我需要在一个缓慢的顶点处获取所有法线的结果。有没有更快的方法呢?基本上更快地重新计算法线以实现平滑着色。
我已经知道的一些事情:
- 使用 SSE 优化正常计算。
- 使用 TBB 或 openMP 来并行化循环。