当前位置: 首页 > 面试题库 >

如何在JavaFX中使用OpenGL?

晋奕
2023-03-14
问题内容

我想编写一个非常简单的Java
3D编辑器(用于实验)。我了解JavaFX的基本用法,并且了解足够的OpenGL知识。但是我所有的OpenGL经验都是来自使用C / C ++。

我可以在JavaFx应用程序中制作“画布”并在其上映射OpenGL视口吗?


问题答案:

在内部,JavaFX可以将OpenGL用作渲染管道,因此需要在两者之间进行一些集成以避免冲突。

JavaFX中的OpenGLNode

JavaFX团队负责人Richard
Bair发表在openjfx开发邮件列表中:

我想看到(例如)8更新的一件事是拥有一个OpenGLNode或NativeSurfaceNode或类似的东西,这样,如果您正在执行自己的D3D /
OpenGL,则可以通过一种方式将这些原始命令发送到图形卡,但场景图中仍然有您的节点。

因此,将来的JavaFX版本更新可能会包含OpenGLNode。直到最初的Java
8版本发布后,下一个JavaFX功能版本才可能在JavaFX一般可用性版本中包含这样的功能(我猜是在2014年9月左右发布)。

第三方OpenGL / JavaFX集成

您无需等待很长时间即可开始集成JavaFX和OpenGL。开始实施所需的所有源代码都已在OpenJFX存储库中打开,因此您可以尝试使用lwjgl或jogl之类的库构建该代码的自定义集成。

随着开发人员开始将JavaFX与现有的针对OpenGL api的Java包装器进行集成,该答案将过时。一些开发人员已经开始了此类工作-
运行google搜索lwjgl javafxjogl javafx查找有关当前集成项目及其状态的信息。

最简单的集成可能是将第3方库渲染到屏幕外缓冲区,然后根据需要将像素从缓冲区传输到JavaFX
WritableImage或Canvas,以将OpenGL渲染的图形复合到JavaFX场景图中。

JavaFX 3D API替代

JavaFX拥有自己的轻量级3D API,能够将phong阴影3d模型合成到JavaFX场景图中。JavaFX 3D api不能提供完整OpenGL
api集成的所有功能,但是使用JavaFX 3D api相对简单。open-jfx Wiki上有Java
8中3D功能的代码示例的描述。

Interactive Mesh
为JavaFX提供了免费的3D模型导入器,使您可以非常简单地将复杂的阴影和纹理3D模型引入JavaFX场景图中。

有一个3D
Viewer项目中的OpenJFX库,你可以fork创建为您提出了基于JavaFX的3D编辑器的基础。

nashorn
JavaScript引擎具有一个开关,可让您使用JavaScript中的JavaFX及其3D功能,因此,您可以根据需要使用其他jvm语言来访问JavaFX
3D功能。



 类似资料:
  • 问题内容: 我是一个初学者,现在我想用java启动GUI应用程序。我开始阅读一些有关FX的书籍,但并未在JDK11上编译..我是否需要使用jdk8还是有什么办法可以在jdk11上完成? 问题答案: JavaFX已脱离JDK11(Oracle的官方JDK和OpenJDK)的捆绑。为了将JavaFX与JDK11结合使用,您必须下载独立的JavaFX11运行时。

  • 问题内容: 我已经安装好了。 JavaFX的下载页面显示以下内容: JavaFX 2.2.7包含最新的安全修复程序,并且与适用于Windows,Mac和Linux的最新JDK 7捆绑在一起。 使用JavaFX 2.2.7下载Java SE 7 像一个不错的菜鸟一样,我按照说明进行操作并安装了JDK。现在,当我寻找可以作为用户库导入到Eclipse的文件时,找不到了。JDK的文件夹中还有一些其他相关

  • editor.fxml,使用: 实际上,我找不到这两种代码有什么不同。我错过什么了吗?

  • 我的Java程序产生了很多数据,我用它构建了单个的ResultObject。因为只有某些结果对象会引起兴趣,所以我填充了一个可观察的HashMap 虽然映射和处理这些结果按预期工作,但我很难用该ObservableHashMap填充TableView 我的CustomObject(如果两个CustomObject具有相同的属性,只需检查JSONObject): 我的ObservableHashMa

  • 我正在用javafx设计一个独立的应用程序(带有scenebuilder 8的FXML),现在我需要在FXML中创建一个CheckBoxTreeItem(查看下图)。 方格树 在搜索时,我得到了一个链接“https://docs.oracle.com/javase/8/scene-builder-2/user-guide/library-panel.htm这有助于我将定制的CheckBoxTree