如何在JavaFX中使用OpenGL?

如何在JavaFX中使用OpenGL?,java,opengl,javafx,Java,Opengl,Javafx,我想写一个非常简单的Java3D编辑器(用于实验)。我知道JavaFX的基本用法,也知道足够的OpenGL知识。但我所有的OpenGL经验都来自于使用C/C++ 我可以在JavaFx应用程序中制作一个“画布”并在其上映射OpenGL视口吗?是的,无论如何,您可以使用OpenGL在Java中有效地实现一切,就像在C/C++中一样。在内部,JavaFx可以使用OpenGL作为渲染管道,因此需要注意两者之间的集成,以避免冲突 JavaFX中的OpenGLNode JavaFX团队负责人Richard

我想写一个非常简单的Java3D编辑器(用于实验)。我知道JavaFX的基本用法,也知道足够的OpenGL知识。但我所有的OpenGL经验都来自于使用C/C++


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

是的,无论如何,您可以使用OpenGL在Java中有效地实现一切,就像在C/C++中一样。

在内部,JavaFx可以使用OpenGL作为渲染管道,因此需要注意两者之间的集成,以避免冲突

JavaFX中的OpenGLNode

JavaFX团队负责人Richard Bair发布在:

我希望看到8更新完成的一件事(例如)是有一个OpenGLNode或NativeSurfaceNode或沿着这些线的东西,这样,如果您正在做自己的D3D/OpenGL,您可以有一种方法将这些原始命令发送到图形卡,但仍然可以在场景图中合成节点

因此,未来的JavaFX版本更新可能包括一个OpenGLNode。 在最初的Java8发布之后的下一个JavaFX功能发布之前,JavaFX通用发行版中可能不会包含这样的功能(我猜大概是在2014年9月)

第三方OpenGL/JavaFX集成

您无需等待太久就可以开始集成JavaFX和OpenGL。启动实现所需的所有源代码都在中打开,因此您可以尝试将该代码与库(如或)进行自定义集成

随着开发人员开始执行JavaFX与OpenGLAPI的现有Java包装器的集成,这个答案将会过时。一些开发人员已经开始了这方面的工作——在谷歌上搜索
lwjgljavafx
jogljavafx
,以了解当前的集成项目及其状态

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

JavaFX 3D API替代方案

JavaFX有自己的轻量级3D api,可以将phong着色3D模型合成到JavaFX场景图中。JavaFX3DAPI不会提供完整OpenGLAPI集成的所有功能,但是使用JavaFX3DAPI相对简单。一个描述,带有的代码示例

InteractiveMesh提供了一个免费的工具,允许您非常简单地将复杂的着色和纹理3D模型引入JavaFX场景图

在中有一种方法,您可以为建议的基于JavaFX的3D编辑器创建基础


nashorn JavaScript引擎有一个开关,允许您使用,因此如果您愿意,可以使用其他jvm语言访问JavaFX 3D功能。

互联网上的示例不多,但这里可以看到一个实现:您可以使用此项目作为基础:您确实可以使用JOGL或LWJGL从Java使用OpenGL,但是在现有的JavaFX窗口中实现它并不是那么简单,这并不能回答很多问题。问题是如何解决的,答案只是指向一个大致的方向。所以,差不多一年过去了。。。关于OpenGLNode有什么消息吗?没有,长官,你可以试着在答案中链接的邮件列表上提问。这是JavaFX的一个理想的补充。希望这能实现。