【问题标题】:Jogl and JavaFXJogl 和 JavaFX
【发布时间】:2020-04-04 01:19:10
【问题描述】:

我听说可以使用 NewtCanvasJFX 将 Jogl 集成到 JavaFX 中,但我无法让它工作。 我尝试过类似的方法。

@Override
public void start(Stage primaryStage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("JavaFX Jogl");
    primaryStage.setScene(new Scene(root, 300, 275));
    primaryStage.show();

    //init Canvas
    final GLProfile glProfile = GLProfile.getDefault();
    final GLCapabilities capabilities = new GLCapabilities(glProfile);

    GLWindow glWindow = GLWindow.create(capabilities);

    NewtCanvasJFX glPanel = new NewtCanvasJFX(glWindow);
    glPanel.setWidth(300);
    glPanel.setHeight(300);

    StackPane openGLPane = new StackPane();
    openGLPane.getChildren().add(glPanel);

    glWindow.addGLEventListener(this);
}

我只需要让 jogl 和 Javafx 一起为一个大学项目工作,所以如果有人有其他解决方案,我将不胜感激。

【问题讨论】:

  • 如果你运行程序会发生什么?你预计会发生什么?
  • 它应该打开一个空窗口,里面有一个画布对象。当我尝试运行它时收到错误“缺少 JavaFX 应用程序类”。
  • 你有main方法吗?
  • 当然: public static void main(String[] args) { launch(args); }
  • 这只是初始化 javafx 并运行 start 函数,上面的所有代码都是 insde。

标签: java opengl javafx jogl


【解决方案1】:

我无法让它与 NewtCanvasJFX 一起使用,但我使用 gljpanel 将 jogl 和 javafx 结合起来。

重要的是所有与 jogl 相关的东西都在 SwingUtilities.invokeLater 中,否则什么都不会被渲染。您可以只使用画布添加 gleventlistener。

@Override
public void start(Stage primaryStage) throws Exception{ 
    root = new StackPane();

    final GLProfile glProfile = GLProfile.getDefault();
    final GLCapabilities capabilities = new GLCapabilities(glProfile);

    canvas = new GLJPanel(capabilities);

    swingNode = new SwingNode();

    root.getChildren().add(swingNode);

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            swingNode.setContent(canvas);
            //jogl stuff here           
        }
    });


    primaryStage.setTitle("JavaFX OpenGL");
    primaryStage.setScene(new Scene(root, 1920, 1080));
    primaryStage.show();         
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多