Оптимизация.

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Оптимизация.

Сообщение longwair » 21.12.2015 (Пн) 14:44

Суть такова, допустим нам надо отрендерить несколько сот одинаковых моделей(мешей), Я это делаю через For Next. Это очень напрягает систему. Думается мне что это можно сделать каким то другим способом! Не наставите на путь истинный?
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Оптимизация.

Сообщение Mikle » 21.12.2015 (Пн) 22:59

Что значит "модель", D3DXMesh? А сколько полигонов? А какого видимого размера? Тут может быть очень много нюансов.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Оптимизация.

Сообщение longwair » 22.12.2015 (Вт) 12:49

Да, именно D3DXMesh, Полигонов по разному, такие модели как трава состоящие из двух полигонов и до деревьев.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Оптимизация.

Сообщение Mikle » 23.12.2015 (Ср) 19:16

Информации мало. Вообще - несколько сот моделей, это не так уж и много, смотря как их отображать. Если тупо из SDK взять код рендера отдельной модели и вставить в цикл - будет тормозить, там много лишнего, многое можно вынести из цикла. Сам по себе метод DrawSubset достаточно тормозной, лучше получить ЗАРАНЕЕ ссылки на вертексный и индексный буферы модели и рендерить с помощью DrawIndexedPrimitives, не используя методы D3DX.
Но в первую очередь нужно провести измерения, например, уменьшить масштаб в 2 раза и сравнить скорость. Далее делать выводы.

longwair
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 145
Зарегистрирован: 21.04.2010 (Ср) 12:37
Откуда: Крым.

Re: Оптимизация.

Сообщение longwair » 23.12.2015 (Ср) 20:38

Mikle, Вот надыбал примерчик, это случаем не то о чём ты говоришь? Можно отображать до 150000 кустиков травы и без тормозов. В моей же "проге", можно отображать 10000 и то с тем учётом что трава отображается только в радиусе заданном мной. То есть по сути даже меньше 10000. В любом случае буду с этим кодом разбираться.
У вас нет доступа для просмотра вложений в этом сообщении.
Тут же #000000 по #ffffff написано
Уроки по 3DS Max для начинающих - http://3dlong.ucoz.ru/

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Оптимизация.

Сообщение Mikle » 24.12.2015 (Чт) 9:04

longwair писал(а):Вот надыбал примерчик

Да уж :))), кто-то нагородил. Вижу тут среди прочего кучу своего кода, только с убитым форматированием.
Сама мысль правильная - собрать всю траву в один вертексный буфер, соответственно рисовать её одним вызовом DrawPrimitive, всего один раз вызывая SetTexture, SetVertexShader, SetStreamSource. Ещё правильнее было бы сформировать вертексный и индексный буферы, рисовать с помощью DrawIndexedPrimitive.


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList