![]() |
Страницы (4): « 1 2 [3] 4 » Показать все 54 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Библиотека FLTK (https://hlfx.ru/forum/showthread.php?threadid=5048)
Не исключено, что в FLTK они обёрнуты одинаково. Но чё гадать, с другой стороны.
XaeroX, походу это можно через виртуальные сканкоды сделать. В SDL есть такая штука https://wiki.libsdl.org/SDL_Scancode
Нажатие на A на azerty клавиатурах возвращает SDL_SCANCODE_Q. Глянул сорцы - там маппинги на коды в ОС. Так что ты прав, хардвар-коды тут лишние.
__________________
I'm on github
I'm on opendesktop.org
Вопросики скорее не про саму либу, а про организацию взаимодействия её с OpenGL. Вот сделал я подкласс Fl_Gl_Window и реализовал триде-вьюпорт для геометрии. Всё зашибись, но теперь я хочу ещё один подкласс, который будет дваде-вьюпортом для ювишек.
Все данные на отрисовку доступны через один и тот же VBO — и для 3D, и для 2D. Надо ли предпринимать что-нибудь особенное, чтобы обе разновидности вьюпорта работали одновременно? Как лучше поступить с шейдерными прогами: создавать под каждый тип вьюпорта свою или юзать общую (и вкорячивать дополнительные условия и униформы в шейдеры)? Не будет ли гонок из-за общего доступа к VBO?
__________________
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 | }; |
render_state *shared_res; |
nemyax
Тебе надо расшарить идентификаторы между двумя OpenGL-контекстами. Это делается по-разному в зависимости от ОС. Например, под виндой это wglShareLists. В FLTK должно быть что-то такое в API (в Qt, допустим, есть).
__________________
nemyax
Я же говорю - "судя по коду"
if ( context ) { |
if ( context_list && nContext ) [b]wglShareLists( context_list[0], context )[/b]; |
add_context( context ); |
} |
__________________
Карочы надо взять у первого GL-окошка контекст через void *my_shared_context = first_good_gl_win->context(); и потом явно задавать его другим нужным окошкам через other_gl_win->context(my_shared_context);. Тогда будет шариться.
XaeroX
Как ты делаешь леяут элементов интерфейса? При помощи FL_Table или FL_Tile или как-нибудь ещё?
nemyax
Никак, у меня нет резиновых окошек, поэтому все координаты задаю вручную.
__________________
Можно набацать виртуальные вьюпорты, через проходы, например. Да мало ли. Через контексты, КМК не очень удобно. Особенно если мы рисуем что-то одно но с разных сторон. Я бы эти вьюпорты рассматривал как частный случай зеркал, например. Ну или через 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'
Временная зона GMT. Текущее время 10:22. | Страницы (4): « 1 2 [3] 4 » Показать все 54 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024