0

我正在尝试使用 Qt 5.5 和 OpenGL 开发应用程序。该应用程序的基本工作是加载简单的对象,修改它们在场景中的位置,并将它们与其他属性(材质、名称、父/子关系等)一起保存。

一个星期以来我唯一苦恼的是,我真的不知道我应该如何处理同步数据的问题。假设我有某种处理所有场景对象的 SceneGraph 类。这些 SceneGraph 应该在 SceneView-Widget 中呈现,该小部件可用于通过转换修改其对象。现在我如何告诉每个 SceneView 对象改变了它的位置?

我想了一会儿模型/视图架构,但我不确定这个实现应该是什么样子。

在不同的 Windows/Widget 中处理这样的对象但仍然只有一个数据的最佳方法是什么?

  • 场景对象:

    • 保存网格信息(verticies、uvs 等)
    • 有一个名字(QString)
    • 有材质
    • 具有存储位置、旋转和缩放信息的变换(重要:这些数据类型应在所有视图中同步)
  • 场景图:

    • 包含不同的SceneObjects并传递给SceneViews
  • 场景视图:

    • 负责在任何 QWindow 中正确绘制场景的 QWidget。
    • 有自己的相机可以四处走动。
    • 处理用户输入并允许转换场景对象。
4

1 回答 1

-1

您可以使用信号和槽来观察场景对象的位置更新并在场景视图中处理它们。

于 2016-11-16T18:46:16.857 回答