Как использовать OpenGL в JavaFX? - программирование
Подтвердить что ты не робот

Как использовать OpenGL в JavaFX?

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

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

4b9b3361

Ответ 1

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

OpenGLNode в JavaFX

Ричард Баир, руководитель команды JavaFX, опубликовал рассылку рассылки openjfx:

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

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

Интеграция сторонних разработчиков OpenGL/JavaFX

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

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

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

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

JavaFX имеет свой собственный легкий 3D-api, который обеспечивает возможность компоновки трехмерных 3D-моделей с фоном в графике сцены JavaFX. JavaFX 3D api не будет предоставлять всю мощь полной интеграции OpenGL api, однако использование JavaFX 3D api относительно просто. Описание, с примерами кода 3D-функции в Java 8 находится в вики open-jfx.

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

Существует Проект 3D-просмотра в openjfx репозиторий, которые вы могли бы развить, чтобы создать основу для предлагаемого 3D-редактора на основе JavaFX.

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

Ответ 2

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