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

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

Страницы: 1 2 3 4 Следующая »
#30
9:58, 29 сен. 2017

innuendo
> где тут http://www.gamedev.ru/code/forum/?id=230154#m3 слова про фоновую
> загрузку ?
Вот почему я правильно понял, что он сказал, а ты нет? :) Наверное связано с тем, что я в курсе про эту технику, а ты первый раз услышал? Ты же в вроде в графике шарил когда-то? :D


#31
10:03, 29 сен. 2017

Мизраэль
> А где там слова о том, что это нельзя делать в фоне?

я уже стал слишком старый для жирного троллинга, пора на пенсию :)

#32
10:27, 29 сен. 2017

Ivashka
> > loading screen
> По запросу нашёл сдесь на сайте хорошую статью, благодарю
Кинь ссылку, а то я чёт не нашёл :)

0xc0de
> Если OGL, то создаешь отдельный контекст в отдельном потоке, в котором грузишь
> текстуру на GPU. Контекст шариш с основным контексом, чтобы ресурсы были общие.
> Как только загрузишь текстуру на GPU, даешь сигнал основному потоку с основным
> контекстом, что ресурс можно использовать.
А как это делается? Если не секрет :)

Ivashka
> ХЕ то ли я плохо разобрался то ли я такой любитель велосипедить но блин  эти
> потоки лишний геморой и проще написать процедуру выполняющую операцию по
> "фрагментно". Ну т.е. применительно к текстуркам просто проверяем размер
> тексуры и в зависимости от размера определяем количество вызовов этой процедуры
> и количество информации загружаемой за 1 раз и далее например каждый кадр
> процедура вызывается пока текстура не загрузится и по завершению загрузки
> выставит флаг готовности текстуры.
Проще говоря тупо стримить :)

#33
12:39, 29 сен. 2017

Daniil Petrov
> Проще говоря тупо стримить :)
Не, тут скорее человек говорит о своей версии job. Есть набор задач, для которых мы в рамках основного потока выделяем какой-то квант времени. В задачах грузятся текстуры, за один квант грузим какой-то сколько-то строк текстуры. Самому такое писать на мой взгляд глупость, можно хотя бы на файберах сделать, но всё равно отдельный поток лучше. Можно его постоянным сделать и кидать в него задачки на загрузку определённых данных. В виде прототипа за пол часа пишется.

#34
12:43, 29 сен. 2017

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

#35
12:55, 29 сен. 2017

Ivashka
А создаешь рендер ты в каком потоке?
Ну и да, это неправильно.

#36
13:14, 29 сен. 2017

Ivashka
> В первом потоке происходит инициализация opengl собираются шейдеры и
> выставляются настройки и т.д. Во втором потоке собственно сам рендеринг.

Если собрался использовать gl в разных потоках, то нужно создать gl-контекст для каждого из потоков.

#37
13:16, 29 сен. 2017

-Eugene-
> Придется контекст шарить. А я уже несколько раз видел на этом форуме людей,
> которые огребли от шареных контекстов.

Это скорее от неправильного использования шареных контекстов, ведь не все объекты можно шарить.

#38
14:12, 29 сен. 2017

0xc0de
Вот один, например
http://www.gamedev.ru/code/forum/?id=183793&page=2#m28

#39
15:06, 29 сен. 2017

> Баг у Intel-a если в одном потоке делать drawInstancing в другом glLinkProgram - прога падает в дровах.

Не, ну рендерить сразу из двух потоков, это еще надо додуматься :)
Но вообще рисовать программой, которая еще не отлинкована - это странно.

> Баг под линукосм - Если удалить поток в котором использовался контекст а потом сам контекст - падает. Если сначала удалить контекст а потом поток - не падает!

Это не баг, так и должно быть. Порядок ининциализации:
create thread
create context

Порядок деинициализации должен быть в обратную сторону:
delete context
delete thread

> Баг под виндой - изза двойной буфферизации и/или изза кривых дров, если удалить ресурс в одном потоке который был отправлен на рендер в другом( после present ) прога падает - glFinish после Present выручает

Это тоже не баг. Все логично. Ресурс удален - нефиг использовать.

В общем пока аргументы о багах не убедительны :)

#40
15:08, 29 сен. 2017

0xc0de
> Не, ну рендерить сразу из двух потоков, это еще надо додуматься :)
Где тут рендер из двух потоков? glLinkProgram - это инициализация ресурсов.

#41
15:10, 29 сен. 2017

-Eugene-
> Где тут рендер из двух потоков? glLinkProgram - это инициализация ресурсов.

Но вообще рисовать программой, которая еще не отлинкована - это странно.

#42
15:11, 29 сен. 2017

0xc0de
Я не увидел в тексте предпосылок к тому, что автор рисовал программой, которая еще не отлинкована.

#43
15:14, 29 сен. 2017

-Eugene-
> Я не увидел в тексте предпосылок к тому, что автор рисовал программой, которая
> еще не отлинкована.

А я не увидел обратного

#44
16:07, 29 сен. 2017

Ivashka
Ты должен работать с GAPI только из того потока, в котором его создал (если я правильно все помню)

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

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