HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Библиотека FLTK
Fast Light Toolkit
Страницы (4): « 1 2 [3] 4 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Не исключено, что в FLTK они обёрнуты одинаково. Но чё гадать, с другой стороны.

Сообщить модератору | | IP: Записан
Сообщение: 171787

Старое сообщение 26-02-2018 18:22
- За что?
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1077

Рейтинг



XaeroX, походу это можно через виртуальные сканкоды сделать. В SDL есть такая штука https://wiki.libsdl.org/SDL_Scancode
Нажатие на A на azerty клавиатурах возвращает SDL_SCANCODE_Q. Глянул сорцы - там маппинги на коды в ОС. Так что ты прав, хардвар-коды тут лишние.

__________________
I'm on github
I'm on opendesktop.org

Сообщить модератору | | IP: Записан
Сообщение: 171789

Старое сообщение 26-02-2018 20:02
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Вопросики скорее не про саму либу, а про организацию взаимодействия её с OpenGL. Вот сделал я подкласс Fl_Gl_Window и реализовал триде-вьюпорт для геометрии. Всё зашибись, но теперь я хочу ещё один подкласс, который будет дваде-вьюпортом для ювишек.
Все данные на отрисовку доступны через один и тот же VBO — и для 3D, и для 2D. Надо ли предпринимать что-нибудь особенное, чтобы обе разновидности вьюпорта работали одновременно? Как лучше поступить с шейдерными прогами: создавать под каждый тип вьюпорта свою или юзать общую (и вкорячивать дополнительные условия и униформы в шейдеры)? Не будет ли гонок из-за общего доступа к VBO?

Сообщить модератору | | IP: Записан
Сообщение: 172871

Старое сообщение 09-06-2018 09:51
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
nemyax писал:
Надо ли предпринимать что-нибудь особенное, чтобы обе разновидности вьюпорта работали одновременно

Нужно расшарить ресурсы между контекстами обеих вьюпортов.
Не могу сказать, как это делается в FLTK, увы.
Цитата:
nemyax писал:
Не будет ли гонок из-за общего доступа к VBO?

Что именно ты собираешься писать в VBO каждый кадр? Нельзя обойтись стейтом и униформами?
Цитата:
nemyax писал:
Как лучше поступить с шейдерными прогами: создавать под каждый тип вьюпорта свою или юзать общую (и вкорячивать дополнительные условия и униформы в шейдеры)?

Нужно профилировать и сравнивать. Я бы (при отсутствии времени на профилирование) предпочёл первый вариант.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 172872

Старое сообщение 09-06-2018 10:09
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
XaeroX писал:
Нужно расшарить ресурсы между контекстами обеих вьюпортов.

Ну то есть если по-простому, то завести что-нибудь наподобие:

C++ Source Code:
1
struct render_state
2
{
3
  GLuint shader_program_3d;
4
  GLuint shader_program_2d;
5
  GLuint vert_buffer;
6
  GLint my_uniform3d_1;
7
  GLint my_uniform3d_2;
8
  GLint my_uniform2d_1;
9
  GLint my_uniform2d_2;
10
};


И в обоих подклассах определить и присвоить:
C++ Source Code:
render_state *shared_res;

Так получается?

Цитата:
XaeroX писал:
Что именно ты собираешься писать в VBO каждый кадр?

Не, у меня содержимое будет перезаписываться только при выполнении команд в основной проге.

Сообщить модератору | | IP: Записан
Сообщение: 172873

Старое сообщение 09-06-2018 10:28
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


nemyax
Тебе надо расшарить идентификаторы между двумя OpenGL-контекстами. Это делается по-разному в зависимости от ОС. Например, под виндой это wglShareLists. В FLTK должно быть что-то такое в API (в Qt, допустим, есть).

Цитата:
nemyax писал:
у меня содержимое будет перезаписываться только при выполнении команд в основной проге.

Тогда в чём может заключаться гонка?

Добавлено 09-06-2018 в 17:42:

Судя по коду, FLTK по дефолту шарит все контексты с первым.
Ну тогда вообще ничего специально делать не надо.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 172874

Старое сообщение 09-06-2018 10:42
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
XaeroX писал:
Тебе надо расшарить идентификаторы между двумя OpenGL-контекстами. Это делается по-разному в зависимости от ОС.

Ага, благодарю, буду копать.

Цитата:
XaeroX писал:
Тогда в чём может заключаться гонка?

Мало ли, вдруг при чистом чтении она тоже может происходить. Я как-то glVertexAttribPointer-ом насовал вершинам атрибутов с соседних вершин дальше по массиву, чтобы не дублировать. Так у меня рендерилось то ожидаемое, то кокаета хрень, как повезёт. Вот теперь дую на воду.

Сообщить модератору | | IP: Записан
Сообщение: 172875

Старое сообщение 09-06-2018 10:51
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
XaeroX писал:
Судя по коду, FLTK по дефолту шарит все контексты с первым.
Ну тогда вообще ничего специально делать не надо.

Не похоже на то. Стоят рядом два одинаковых GL-окошка, одно рендерит буфер, другое нет. Идентификаторы они на отрисовку отдают одни и те же.

Сообщить модератору | | IP: Записан
Сообщение: 173255

Старое сообщение 04-07-2018 14:00
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


nemyax
Я же говорю - "судя по коду"

C++ Source Code:
if ( context ) {
  if ( context_list && nContext ) [b]wglShareLists( context_list[0], context )[/b];
  add_context( context );
}

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 173256

Старое сообщение 04-07-2018 14:02
-
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Карочы надо взять у первого GL-окошка контекст через void *my_shared_context = first_good_gl_win->context(); и потом явно задавать его другим нужным окошкам через other_gl_win->context(my_shared_context);. Тогда будет шариться.

Сообщить модератору | | IP: Записан
Сообщение: 173258

Старое сообщение 05-07-2018 13:21
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



XaeroX
Как ты делаешь леяут элементов интерфейса? При помощи FL_Table или FL_Tile или как-нибудь ещё?

Сообщить модератору | | IP: Записан
Сообщение: 180401

Старое сообщение 20-06-2019 13:32
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34498
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


nemyax
Никак, у меня нет резиновых окошек, поэтому все координаты задаю вручную.

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

Сообщить модератору | | IP: Записан
Сообщение: 180405

Старое сообщение 20-06-2019 14:12
-
EXL
Житель форума

Дата регистрации: Oct 2012
Проживает: Новосибирск
Сообщений: 246
Возраст: 35

Рейтинг



Цитата:
XaeroX писал:
Что используете в своих проектах, монстры типа Qt или wxWidgets, или что-то аналогично-легковесное?


Сейчас очень популярной стала эта либа: https://github.com/ocornut/imgui, во многих игровых проектах её хвост торчит. Неплохо сопрягается со многими современными блиттерами, вроде OpenGL, Vulkan, Metal, DX: https://github.com/ocornut/imgui/tree/master/examples

Есть ещё такое: https://github.com/vurtun/nuklear
FLTK уж больно древненький ИМХО

Сообщить модератору | | IP: Записан
Сообщение: 180477

Старое сообщение 22-06-2019 21:15
- За что?
nemyax
Нёмыч

Дата регистрации: Jul 2011
Проживает: (void)
Сообщений: 4133

Рейтинг



Цитата:
nemyax писал:
Карочы надо взять у первого GL-окошка контекст через void *my_shared_context = first_good_gl_win->context(); и потом явно задавать его другим нужным окошкам через other_gl_win->context(my_shared_context);. Тогда будет шариться.

Идиотский оказался совет, не делайте так. Лучше рисовать несколько glViewport-ов в одном окошке.

Сообщить модератору | | IP: Записан
Сообщение: 181152

Старое сообщение 10-07-2019 13:13
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32188
Нанёс повреждений: 392 ед.

Рейтинг



Можно набацать виртуальные вьюпорты, через проходы, например. Да мало ли. Через контексты, КМК не очень удобно. Особенно если мы рисуем что-то одно но с разных сторон. Я бы эти вьюпорты рассматривал как частный случай зеркал, например. Ну или через FBO.

Добавлено 10-07-2019 в 16:55:

ЗЫ. я вот с этим моментом никогда не сталкивался, пусть Ксерокс поправит, но помоему память выделяется под конкретный контекст и чтобы нарисовать ту же карту четыре раза, надо её и загрузить четыре раза, то есть займет вчетверо больше памяти, но чтобы этого избежать контексты шарят, но тут-то кроются всякие подводные камни.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'

Сообщить модератору | | IP: Записан
Сообщение: 181154

Старое сообщение 10-07-2019 13:55
-
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 19:48. Новая тема    Ответить
Страницы (4): « 1 2 [3] 4 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Библиотека FLTK
Fast Light Toolkit
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024