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

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

17.03.2020, 16:21. Показов 2138. Ответов 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
2869 / 1375 / 409
Регистрация: 11.08.2017
Сообщений: 4,401
Записей в блоге: 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
2869 / 1375 / 409
Регистрация: 11.08.2017
Сообщений: 4,401
Записей в блоге: 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
2869 / 1375 / 409
Регистрация: 11.08.2017
Сообщений: 4,401
Записей в блоге: 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
2869 / 1375 / 409
Регистрация: 11.08.2017
Сообщений: 4,401
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru