渲染多个简单对象的技术

时间:2016-06-20 13:45:39

标签: c++ opengl rendering

我想渲染数量级为10 ^ 2到10 ^ 3的简单对象。至于现在,这些对象只是具有颜色和法线的立方体(或12个三角形)。 立方体'高度,宽度和位置将彼此不同。 将基于伪随机计算创建这些属性。

在玩家移动到某个位置之前,属性不会改变。因此,每帧没有任何变化,但是当到达某个位置时,所有内容都会同时发生变化。

所以我现在正在做的是:

  • 通过填充3个缓冲区进行初始化:顶点位置,法线和颜色
  • 缓冲区包含场景中所有多维数据集的所有信息
  • 使用一个glDrawArray()调用
  • 将整个缓冲区发送到一个简单的着色器
  • 当达到某个位置时,将为每个对象重新计算所有位置,法线和颜色,并使用glBufferSubData()
  • 更新整个缓冲区

根据我现在拥有的对象数量,缓冲区的更新需要比预期更长的时间,并且非常明显。我还计划在立方体中添加更多属性和细节,这将进一步增加这个时间。

鉴于我目前正在做的这个简单描述,我是否可以使用任何渲染技术来改善更新缓冲区的时间?

(我正在使用OpenGL和C ++)

修改

  • 有没有办法更有效地更新完整的缓冲区?
  • 逐步更新缓冲区..?
  • 我可以以某种方式让缓冲区保存更少的信息(只有每个立方体中心位置),然后让着色器以某种方式"做其余的"?

0 个答案:

没有答案