在一个有很多3D移动对象的大型OpenGL游戏中,点通常是如何更新的?

在一个有很多3D移动对象的大型OpenGL游戏中,点通常是如何更新的?,opengl,3d,Opengl,3d,使用自己的物理引擎计算的点,然后在每次必须显示时发送到OpenGL,例如使用glBufferSubDataArb,以及飞行桶的更新坐标 有许多桶具有相同的世界坐标,但不知何故,对于每一个桶,您告诉OpenGL使用不同的矩阵变换。当木桶移动时,您会以某种方式更新它的变换矩阵,以反映它在世界上旋转/平移的方式 另一种方式 此外,如果答案是#2,是否有任何简单的方法可以做到这一点,例如使用抽象代码而不是自己操作矩阵OpenGL不是场景图,而是绘图API。OpenGL的最新版本(OpenGL-3核心及以

使用自己的物理引擎计算的点,然后在每次必须显示时发送到OpenGL,例如使用glBufferSubDataArb,以及飞行桶的更新坐标

  • 有许多桶具有相同的世界坐标,但不知何故,对于每一个桶,您告诉OpenGL使用不同的矩阵变换。当木桶移动时,您会以某种方式更新它的变换矩阵,以反映它在世界上旋转/平移的方式

  • 另一种方式


  • 此外,如果答案是#2,是否有任何简单的方法可以做到这一点,例如使用抽象代码而不是自己操作矩阵

    OpenGL不是场景图,而是绘图API。OpenGL的最新版本(OpenGL-3核心及以上版本)反映了这一点,根本不管理矩阵状态。事实上,答案是2,或多或少。实际上,你需要处理矩阵数学。OpenGL-3不再为此提供任何原语

    通常,物理引擎将对象视为具有凸面外壳的刚体。表示这种物体的自然方式是使用4×3矩阵(3×3旋转矩阵和平移向量)。所以,如果使用物理引擎,你会得到这样的矩阵


    此外,您必须了解OpenGL不维护场景,因此您没有“更新”任何内容。您只需使用OpenGL绘制数据。矩阵根据需要加载。

    OpenGL不是场景图,而是绘图API。OpenGL的最新版本(OpenGL-3核心及以上版本)反映了这一点,根本不管理矩阵状态。事实上,答案是2,或多或少。实际上,你需要处理矩阵数学。OpenGL-3不再为此提供任何原语

    通常,物理引擎将对象视为具有凸面外壳的刚体。表示这种物体的自然方式是使用4×3矩阵(3×3旋转矩阵和平移向量)。所以,如果使用物理引擎,你会得到这样的矩阵

    此外,您必须了解OpenGL不维护场景,因此您没有“更新”任何内容。您只需使用OpenGL绘制数据。矩阵按需要加载