С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
-12 / 1 / 0
Регистрация: 11.02.2017
Сообщений: 246

OpenGL LWJGL3 -> GLFW и JavaFX возможно ли вместе?

17.03.2020, 16:21. Показов 2096. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. Только недавно начал изучать Java. Вопрос такой: я при помощи библиотеки GLFW создаю окно
Code
1
this.id = GLFW.glfwCreateWindow(this.width, this.height, this.title, 0L, 0L);
в котором рисую на OpenGL.
Возможно ли в этом же окне рисовать графический интерфейс JavaFX?
Смогу ли я осуществить следующие задачи?:
1. на экране будет отображаться графика OpenGL и параллельно кнопки JavaFX;
2. на экране только графика OpenGL но при действиях с ней она исчезает и только интерфейс JavaFX, и наоборот соответственно.

Необходимо ли для JavaFX создавать дополнительное окно? Только учусь, простите за глупые вопросы. Спасибо за ответ и понимание

Добавлено через 6 минут
/////

Второй вопрос с целью не создавать вторую тему:
В:
Code
1
GL30.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, x1, x2);
есть два последних атрибута, назовем их x1 и x2. Если у меня например 3 вершины вида (1.0f,1.0f,0.0f, 1.0f,1.0f) то есть 3 координаты вершины и 2 текстурные, то какими должны быть эти атрибуты для вершинных и для текстурных координат?? Сколько примеров не находил не могу понять.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.03.2020, 16:21
Ответы с готовыми решениями:

Ошибка при использовании OpenGL в LWJGL3
Linux Mint 18.2 64-bit # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at...

Сборка программы на openGL, glfw, glew
Вот уж не думал, что возникнут проблемы с этим... Но я не могу скомпилировать банальную программу c 3-мя инклудами, одним glfwInit и 4-мя...

glfw+glew opengl start errors
Вообщем, делал по одному туториалу. По идее код должен просто создавать окно полностью красного цвета, однако у меня вышли ошибки которые я...

7
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,330
Записей в блоге: 2
17.03.2020, 17:33
Отвечу сначала на второй вопрос
У функции glVertexAttribPointer имеет немного параметров, давайте быстро пробежимся по ним:
-Первый аргумент описывает какой аргумент шейдера мы хотим настроить. Мы хотим специфицировать значение аргумента position, позиция которого была указана следующим образом: layout (location = 0).
-Следующий аргумент описывает размер аргумента в шейдере. Поскольку мы использовали vec3 то мы указываем 3.
-Третий аргумент описывает используемый тип данных. Мы указываем GL_FLOAT, поскольку vec в шейдере использует числа с плавающей точкой.
-Четвертый аргумент указывает необходимость нормализовать входные данные. Если мы укажем GL_TRUE, то все данные будут расположены между 0 (-1 для знаковых значений) и 1. Нам нормализация не требуется, поэтому мы оставляем GL_FALSE;
-Пятый аргумент называется шагом и описывает расстояние между наборами данных. Мы также можем указать шаг равный 0 и тогда OpenGL высчитает шаг (работает только с плотно упакованными наборами данных). Как выручить существенную пользу от этого аргумента мы рассмотрим позже.
-Последний параметр имеет тип GLvoid* и поэтому требует такое странное приведение типов. Это смещение начала данных в буфере. У нас буфер не имеет смещения и поэтому мы указываем 0.

То есть у вас там будет в 5 5*4 (5 вершин типа флоат который 4 байта), для первого набора (вершин) в конце будет 0 (так как смещения нету) а для текстурных координат будет первое тоже самое а второе 3*4 (так как первые 3 вершины это геометрия)
Но имхо использовать все в одном массиве не очень, лучше для каждого типа данных свой буфер, и тогда можно будет оба параметра оставлять 0 и не париться

Добавлено через 37 минут
Теперь пару слов про гибрид. Про fx не знаю видел только со свингом и пример был на оф гите вроде, там в окно glfw добавлялись элементы из свинга, не запускал не знаю как выглядело и работало. Вечером могу ссылку на тот гит скинуть.
Lwjgl 2 версии вроде без проблем интегрировался так как там был canvas и в целом другая система окон а в 3 версии это поменяли.
Зачем соединять эти вещи? Имхо у них принципы работы разные, opengl использует игровой цикл который занимает главный поток программы а в граф средствах джавы нету этого цикла (по крайней мере явно) и все события от элементов. У фх есть вроде своя 3д система. И мне кажется вместо того чтобы соединять эти плохо соединимые вещи лучше создать кнопки и другие элементы используя opengl будет быстрее и проще.
1
-12 / 1 / 0
Регистрация: 11.02.2017
Сообщений: 246
17.03.2020, 17:48  [ТС]
Беда в том что элементов аля кнопки чекбоксы таблицы и прочее будет очень много и рисовать это на Опенгле мне представляется тихим ужасом. Пробую два разных окна для гла и фикса, не знаю правда полный это маразм или очень полный. Есть еще варианты для подобного но не в опенгле?
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,330
Записей в блоге: 2
17.03.2020, 18:14
Ну почему ужас? Создаете класс, к примеру для кнопки со всем функционалом и потом используете как обычные элементы из фх. Только придется написать методы которые будут обрабатывать события нажатий и выделения мышкой. Для выделения чтобы изменять внешний вид можно использовать половину картинки текстуры и просто смешатьтекстурные координаты в шейдере. Я у себя сейчас меню собираю как на свинге добавив объект, назначив текстуру и положение. Груюо говоря вышел свинг без менеджера компоновки.
Кстати предложенный мною вариант хранения данных (v вершина, t текстура, n нормаль) вместо вашего v0t0n0v1t1n1… v0v1... t0t1... n0n1... их можно в разные буферы и параметры 0,0 последние ставить, либо в один буфер и указав нужные смещения. Это называется плотноупакованными данными, хоть везде говорят что чередование производительнее (но и то так как элементы от каждой вершины рядом) но при загрузке моделей из файлов данные разделены по типам и перемешивать их для чередования выйдет затратнее и медленнее
1
-12 / 1 / 0
Регистрация: 11.02.2017
Сообщений: 246
17.03.2020, 19:03  [ТС]
А рисовать графику OpenGL в окне JavaFX возможно?
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,330
Записей в блоге: 2
17.03.2020, 19:07
Вот такое точно нет. Может вам стоит изучить 3d в javafx? Видел что там такое есть, или обязательно opengl?
0
-12 / 1 / 0
Регистрация: 11.02.2017
Сообщений: 246
17.03.2020, 19:10  [ТС]
Ну мне кажется с уровнем той графики которую я хочу FX не справится. Примеры смотрел.
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,330
Записей в блоге: 2
17.03.2020, 21:39
Вот нашел в исходниках lwjgl на гитхабе нашел вот что
https://github.com/LWJGL/lwjgl... iftFX.java
судя по импортам как раз opengl + javafx, только какойто driftfx используется

Добавлено через 16 минут
Там похоже рендер opengl в окно javafx, только вот кроме этого гитхаба driftfx вообще не ищется, так что изучать его надо будет методом тыка используя пример. Еще похоже там фрэймбуфер используется кастомный, в который может рендерить opengl и который можно поместить в javafx окно. В составе lwjgl не помню этого компонента если честно. Там же в примерах есть использование и со свингом.

Добавлено через 2 минуты
Мне кажется по такой экзотике мало кто поможет и вряд ли удастся найти даже англ гайд. Информация только в документации если есть

Добавлено через 1 час 41 минуту
Оказывается это часть новой версии lwjgl которая еще в разработке и предварительная версия доступна уже давно, там добавили и физический движок bullet
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.03.2020, 21:39
Помогаю со студенческими работами здесь

Не видит функций OpenGL, хотя GLFW подключен
Приветствую. Решил начать изучать OpenGL, возникла следующая проблема: линковщик ругается на glDrawArrays. Библиотеки GLEW и GLFW...

Вызов функции 1 раз в игровом цикле OpenGl, библиотека GLFW
Я пишу визуализацию алгоритма сборки кубика рубика Кубик рубика отрисовывается в игровом цикле и у меня есть вопрос,каким образом я...

GLFW + Npp -> NppExec. Не могу Слинковать GLFW
Здравствуйте! У меня не получается слинковать GLFW. Оно вроде как компилируется, так как ошибки нет но при линковки возникает ошибка. Я не...

Возможно ли использовать SpedStep вместе с разгоном ?
Здравствуйте. Возможно ли использовать SpedStep (сбережение энергии) вместе с разгоном. Дело в том, что вольтаж я зафиксировал (Manual), и...

Купил компьютер с установленным Windows 8.1, возможно вместе и с вирусом
При загрузке системы вылезает на черном экране amd.exe после чего исчезает...сайты в интернете открываются медленно, а то и вообще не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru