Войти
ПрограммированиеФорумГрафика

Асинхронная загрузка текстур Opengl (2 стр)

Страницы: 1 2 3 Следующая »
#15
14:40, 25 фев. 2021

Went
> С разными контекстами в OpenGL решил не морочить голову

там столько багов можно собрать


#16
17:24, 25 фев. 2021

innuendo
> там столько багов можно собрать
Особенно под мультиплатформу.

#17
0:13, 26 фев. 2021

Ashmedi
> urii, тебе нужны мегатекстуры. Ищи на форуме, было много тем и статей.
спасибо почитаю

#18
0:28, 26 фев. 2021

Suslik
> то есть ты считаешь, что если она будет загружаться асинхронно, то это бы
> затянулось менее надолго?
Прикол именно в том чтобы не лагал оставшийся интерфейс приложения и другой функционал также вызываемый по таймеру. Я понимаю что если текстурам грузится за время N/V то я это не уменьшу - но я могу дать приложению эти N/V секунд выполнять другие операции....к этому и стремлюсь


Suslik
> лол это вообще по-другому делается. фишка мипмапов в том, что тебе как раз НЕ
> нужно 1024 изображений по 256х256
Ну я были попытки работы с dds форматом. Грузится в память ощутимо быстрее - но жмется отвратительно. Я уже писал здесь что получается база тайлов в 40 Гб... И к тому может я не верно понимаю но мипмапы хранятся (во всяком случае в dds) в одном файле последовательно от большего к меньшему, по уменьшению размера - так что я буду вынужден грузить текстуру с самым детальным масштабом (а таких для мелких масштабов получится много) и потом выбирать более мелкий мипмап?не вижу применимость для этой задачи просто....

#19
(Правка: 0:51) 0:43, 26 фев. 2021

urii
> Ну я были попытки работы с dds форматом. Грузится в память ощутимо быстрее - но
> жмется отвратительно.
dds — это контейнер, который поддерживает алгоритмы сжатия DXT, либо позволяет хранить несжатые изображения. его основное преимущество перед любым другим форматом — его понимает видеокарта, поэтому он грузится в неё напрямую в сжатом виде без разжатия или пережатия.

urii
> И к тому может я не верно понимаю но мипмапы хранятся (во всяком случае в dds)
> в одном файле последовательно от большего к меньшему, по уменьшению размера -
> так что я буду вынужден грузить текстуру с самым детальным масштабом (а таких
> для мелких масштабов получится много) и потом выбирать более мелкий мипмап?не
> вижу применимость для этой задачи просто....
одними только мипмапами эти вопросы не решаются. это делается через более хитрый стриминг, гугли, как работают мегатекстуры, clipmapping, sparse virtual textures: http://silverspaceship.com/src/svt/

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

#20
0:54, 26 фев. 2021

HolyDel
> Какого размера тайл? Грузи 1-10 тайлов кадр, будет нормально. (на Pci-Ex 4.0
> 16x).
тайл 256х256. но видеокарта старая, поддерживается лишь open gl 2.0


> urii
> > Перерисовка сцены происходит по таймеру один раз в секунду.
> А не, у тебя что-то странное.
Ну повторно тайлы не грузятся в память, но под каждый приходится делать свою текстуру чтобы не морочиться если юзер захочет перемещаться по карте не меняя масштаб (иначе если пользоваться например glTexsubimage2d то  придется все тайлы входящие в отображаемую область заново передавать). тайлы храню как map ключ:x,y,zoom значение: идентификатор текстуры open gl.

> Заливаешь в PBO1. Копируешь PBO1 в TEX1. Рисуешь TEX2.
А если до вызова glTexImage2D текстура еще не передалась он остановится или как?
мне просто важно понять: вот я увеличил масштаб. вместо одного тайла нужно прогрузить например все 4 (все помещаются в отображаемую область) как понять что могу переходить на 4 новых текстуры и рисовать уже их вместо исходной?

#21
0:57, 26 фев. 2021

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

#22
1:26, 26 фев. 2021

urii
> А если до вызова glTexImage2D текстура еще не передалась он остановится или как?
да, остановится.

У тебя бюджет кадра 1000мс. Можно за это время передать гигабайт данных на видеокарту. Я не вижу вообще никаких проблем за эту секунду загрузить все видимые тайлы и выгрузить все невидимые.

#23
8:23, 26 фев. 2021

HolyDel
> У тебя бюджет кадра 1000мс.
Нет у меня такого бюджета. Я через секунду лишь перерисую положение объектов, которое за секунду обновится. Буду использовать идентификаторы загруженных текстур и передавать лишь точки привязки.

Сейчас вычисление размеров области и загрузка текстур инициируется из MouseEvent. Это приводит к подтормаживанию реакции на события мыши. Если я сделаю загрузку из paintGL то это будет отставать от действий пользователя на секунду. Проблема в пролагивании а занять секунду потока я не могу потому что вообще все встанет...

#24
23:55, 26 фев. 2021

urii
> тайл 256х256. но видеокарта старая, поддерживается лишь open gl 2.0
А что за видеокарта такая? Такие ещё остались в 2021 году? И если да, то зачем нужно её поддерживать?
И как так получилось, что 2.0, а не 2.1? Насколько я знаю, самые последние версии драйверов видеокарт, которые поддерживали 2.0, должны поддерживать и 2.1.

#25
(Правка: 15:09) 15:08, 27 фев. 2021

gammaker
> А что за видеокарта такая? Такие ещё остались в 2021 году? И если да, то зачем
> нужно её поддерживать?
там дело даже не столько в самой видеокарте сколько в драйвере и ОС отечественного производства.  Драйвер производитель собрал из открытых исходников которые были на тот момент и все... ПО пишется под конкретное железо. glxinfo показывает что поддерживается OpenGL 2.0

#26
17:37, 27 фев. 2021

urii
Поставь Linux Manjaro там дрова от шмесы свежие, там Vulkan отлично работает, не говоря про убожеставо гл.

#27
17:44, 27 фев. 2021

Andrey
> urii
> Поставь Linux Manjaro там дрова от шмесы свежие, там Vulkan отлично работает,
> не говоря про убожеставо гл.
Я же говорю что софт разрабатывается под конкретное железо и ОС отечественного разработчика

#28
18:47, 27 фев. 2021

По поводу PBO, на моей gt 1030 вызов glTexImage2D не блокирует поток, на время загрузки функция texture в glsl выдаёт чёрный цвет. Гугл подсказывает, что тормоза при загрузке зависят от наличия в gpu отдельного copy engine(или как оно правильно у разных вендоров называется).

#29
18:55, 27 фев. 2021

Andrey
> ам Vulkan отлично работает, не говоря про убожеставо гл.

ты лично оплатишь труд за порт на вулкан?

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика