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

Загрузка текстур на лету.

Страницы: 1 2 3 4 Следующая »
#0
17:20, 26 сен. 2017

Собственно поискал сабж по форуму но внятных топиков нет. Задача такова: есть большие текстуры 8192*8192  количество таких текстур огромное - гигабайты поэтому грузить их сразу не вариант. Ну понятно надо делать менеджер следящий за актуальными не актуальными текстурами и соответственно загружающий выгружающий их (собственно такой менеджер сейчас пишу). Но я так понял нужен не только менеджер управляющий текстурами но и специальный алгоритм загрузки. Например сейчас при загрузке 12 текстур вышеуказанного размера приложение подтормаживает более секунды, соотвественно я пришёл к выводу типа надо грузить текстуры кустами. И если в загрузке кусками в ОЗУ в принципе всё понятно, то с GPU я не соображаю, знаю только glBindTexture, но ведь он не подходит. В общем интересно почитать про варианты динамической загрузки текстур на лету без тормозов.


#1
17:27, 26 сен. 2017

Ivashka
> знаю только

что такое нити знаешь ? многопоточность

#2
17:40, 26 сен. 2017

Ivashka
Храни на диске текстуру с mipmap'ами. Сначала подгружай мелкие, потом более крупные, делая каждый раз последний загруженный лод базовым.
Ну и чтобы не тратить время на распаковку и память, надо держать их в сжатых форматах, например DXT1, которые видеокарты могут использовать напрямую без распаковки.

#3
17:53, 26 сен. 2017

Погугли loading screen, должно помочь

#4
17:58, 26 сен. 2017

Ivashka
https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_sparse_texture.txt

#5
18:00, 26 сен. 2017

nonamezerox

у него инфаркт будет

#6
18:01, 26 сен. 2017

Насколько я знаю, Pixel Buffer Object как раз для этого.
Хотя проще замапить текстуру и постепенно заполнять данными.

#7
18:50, 26 сен. 2017

Ivashka
Все известные мне GAPI умеют кусками грузить текстуры.

#8
18:56, 26 сен. 2017

Ivashka
> Способ.
Что способ?

Ах да, некоторые ГАПИ умеют грузить текстуры (и не только) в другом потоке.

#9
19:09, 26 сен. 2017

Ivashka
> Просто я думал есть типо subdata для текстурок.
это? https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glTexSubImage2D.xhtml

#10
22:28, 26 сен. 2017

Ivashka
В glTexImage2D не запрещается передать пустой указатель, и таким образом просто сделать "malloc" в видеопамяти, так что не надо терзаться предварительной загрузкой сразу всей большой текстуры.

#11
0:06, 27 сен. 2017
-Eugene-
> Ах да, некоторые ГАПИ умеют грузить текстуры (и не только) в другом потоке.

Ах да, некоторые ГАПИ умеют работать на разных платформах

#12
6:32, 27 сен. 2017
Кто о чём, о innuendo всё о кроссплатформе.
#13
7:59, 27 сен. 2017
prowkan
> Кто о чём, о innuendo всё о кроссплатформе.
Тот самый момент, когда отвечаешь за Win/Android в игре, которая в продакшне на 3-х платформах, а работать должна на 5 (+ mac/linux у разработчиков), всё GL/C++. Нифига не смешно, слушай innuendo, дело говорит ведь.
#14
9:22, 27 сен. 2017

Ivashka
> Да слышал поверхностно, но я так понял за счёт создания отдельного потока в
> котором грузится текстура с диска не добится увеличения скорости загрузки
> текстуры в GPU, ну т.е. я имею ввиду сейчас я знаю только один способ заливки
> текстуры в GPU это сразу залить массив данных в видяху. Получается загружая в
> ОЗУ текстурки кусками я один хрен потеряю время на загрузки больших обьёмов
> данных в видяху.

Если OGL, то создаешь отдельный контекст в отдельном потоке, в котором грузишь текстуру на GPU. Контекст шариш с основным контексом, чтобы ресурсы были общие. Как только загрузишь текстуру на GPU, даешь сигнал основному потоку с основным контекстом, что ресурс можно использовать.

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

Тема в архиве.