【问题标题】:Frustum Culling in JavaFXJavaFX 中的截锥体剔除
【发布时间】:2013-01-21 09:07:59
【问题描述】:

我希望在我的 JavaFX 应用程序中实现一些 Frustum Culling,因为场景外可能有大量节点,但有一些鼠标事件(例如拖动)可能会将它们带回场景。 JavaFX 框架中是否已经有一些方法,或者我必须自己实现它。我已经尝试实现一种裁剪方法,该方法可以删除场景之外的节点,但是在鼠标事件之后很难更新场景。

任何帮助将不胜感激 谢谢

【问题讨论】:

标签: javafx-2 culling


【解决方案1】:

您是否要求永久完全删除节点或担心渲染?

场景外的节点应该被渲染,这由JavaFX处理。

【讨论】:

  • 没有没有删除只是没有渲染。当使用鼠标事件滚动剩余节点时,应用程序的性能会急剧下降,如果它们有大量的话
  • 你怎么知道场景中的节点正在被渲染?尝试使用 jvisualvm 进行分析,同时拖动节点以查看是什么占用了处理能力。这可能会显示很多 JavaFX 内容,但可能会缩小范围。
  • 如果我有少量节点,拖动节点时几乎没有延迟,但是如果有很多像 100+ 这样的应用程序在拖动时会卡顿并且有很多延迟
【解决方案2】:

我的猜测是每个节点都附加了侦听器..因此您正在创建 (n ->) 听众... 也许尝试创建一个方法,在悬停时添加拖动侦听器/并在悬停退出时移除。此外,未在屏幕上呈现的节点也应移除此类侦听器。

也许将这些侦听器包装在 WeakListener 类中

只是我的想法......

【讨论】:

    猜你喜欢
    • 2021-04-14
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多