2013-06-05 4 views
14

Я хочу написать очень простой Java 3D-редактор (для эксперимента). Я знаю базовое использование JavaFX, и я знаю достаточно знаний OpenGL. Но весь мой опыт OpenGL - это работа с C/C++.Как использовать OpenGL в JavaFX?

Могу ли я создать «холст» в приложении JavaFx и отобразить на нем окно просмотра OpenGL?

+0

В Интернете мало примеров, но здесь можно увидеть реализацию: http://www.java-gaming.org/topics/lwjgl-javafx-integration/27801/view.html – Appleshell

+0

Вы можете использовать это проект в качестве базы: https://github.com/Spasi/LWJGL-FX –

ответ

14

Внутри JavaFX может использовать OpenGL как конвейер рендеринга, поэтому для предотвращения конфликтов требуется некоторое внимание к интеграции между ними.

OpenGLNode в JavaFX

Ричард Баир, JavaFX руководитель группы размещены на openjfx development mailing list:

Одна вещь, которую я хочу видеть сделано (например) для 8 обновлении иметь OpenGLNode или NativeSurfaceNode или что-то в этом направлении, так что, если вы делаете свой собственный D3D/OpenGL, вы можете отправить эти исходные команды на графическую карту, но все же у вас есть ваш узел, составленный на графике сцены.

Так что в будущем выпуске релиза JavaFX может быть включен OpenGLNode. Такая функция, вероятно, не увидит включения в общую версию доступности JavaFX до следующего выпуска функции JavaFX после первоначальной версии Java 8 (моя догадка заключается в том, что это будет примерно в сентябре 2014 года).

третья партия OpenGL/JavaFX интеграции

Вам не нужно ждать так долго, чтобы начать интеграцию JavaFX и OpenGL. Весь необходимый исходный код для запуска реализации открыт в OpenJFX repository, поэтому вы можете попытаться создать пользовательскую интеграцию этого кода с библиотекой, такой как lwjgl или jogl.

Этот ответ будет устаревшим, поскольку разработчики начнут выполнять интеграцию JavaFX с существующими оболочками Java для OpenGL apis. Некоторые разработчики уже начали такую ​​работу - запустите поисковый поиск lwjgl javafx или jogl javafx, чтобы узнать о текущих проектах интеграции и их статусе.

Простейшая интеграция, вероятно, иметь третью библиотеку партии оказывать выключенный экранный буфер затем передать пиксели из буфера в JavaFX WritableImage или Canvas как требуется, чтобы получить OpenGL визуализации графики в композитах графа сцены JavaFX.

JavaFX 3D API Альтернативный

JavaFX имеет свой собственный легкий 3D API, который обеспечивает способность к композитному Фонг затененной 3d модели в граф сцены JavaFX. JavaFX 3D api не будет предоставлять всю мощь полной интеграции OpenGL api, однако использование JavaFX 3D api относительно просто. Описание, с примерами кода 3D features in Java 8 is on the open-jfx wiki.

Интерактивная сетка обеспечивает бесплатную 3D model importer for JavaFX, что позволяет очень просто переносить сложные тенистые и текстурированные 3D-модели в граф сцены JavaFX.

В openjfx repository есть 3D Viewer project, который вы можете использовать для создания основы для предлагаемого 3D-редактора на основе JavaFX.

JavaScript-движок nashorn имеет переключатель, который позволяет вам использовать use JavaFX and its 3D features from JavaScript, поэтому вы можете использовать альтернативные языки jvm для доступа к функциям JavaFX 3D, если хотите.

+5

Итак, прошло почти 1 год ... Есть ли новости о OpenGLNode? –

+4

Нет Sarge, вы можете попробовать просить список рассылки, связанный с ответом. – jewelsea

+1

Это такое необходимое дополнение к JavaFX. Хотелось бы, чтобы это осуществилось. –

2

Да, конечно, вы можете использовать JOGL, чтобы эффективно использовать все, что могли, в Java с OpenGL, как вы можете в C/C++.

+8

Вы можете использовать JOGL или LWJGL для использования OpenGL с Java, но на самом деле это не так просто реализовать в существующем окне JavaFX. – Appleshell

+0

Это не очень много отвечает на вопрос. Вопрос спрашивает, как, ответ просто указывает в общем направлении. – Suma

Смежные вопросы