Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 23.07.2008, 16:44   #1
Dstorton111
Оператор ЭВМ
 
Регистрация: 03.05.2007
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Что быстрее LoadMesh vs LoadAnimMesh?

Почему когда я гружу уровень (~ 30 тыс/полигонов) через LoadAnimMesh(чтобы пропарсить его) FPS падает в разы больше чем через простую LoadMesh ?

И ещё вопрос, Через блитцевскую команду AvailVidMem() заметил что при загрузке геометрии в видео-память и последующем её скрытии на расстоянии память моей карточки не освобождается, пока мешей мало всё будет нормально, а что когда мой проект разрастётся скажем до 500 тыс.полигонов?
При юзанье комманды HideEntity я так догнал что свобода настаёт только рендеру но не как не ОЗУ моей видеокарты?
(Offline)
 
Ответить с цитированием
Старый 23.07.2008, 17:13   #2
LD
ПроЭктировщик
 
Регистрация: 18.11.2006
Сообщений: 179
Написано 7 полезных сообщений
(для 16 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

Насчет первого вопроса не знаю, сам не пробовал. А с HideEntity ты абсолютно прав, отключается рендер этой модели (и соответственно обработка анимации и остальной работы над моделью), но ее геометрия и.т.д. естественно остаются в памяти, или как ты хотел? Хайдаешь энтити и он выгружается из видеопамяти? ))) А теперь представь себе чтобы его обратно показать - надо вновь загрузить? ))) Чтобы из видеопамяти выгрузить юзай FreeEntity (выгружается геометрия, браши и все остальноеЮ, что связано с этим энтити (позиция, поворот и.т.д.))
(Offline)
 
Ответить с цитированием
Старый 23.07.2008, 17:22   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

насчет первого вопроса.
твой уровень состоит из кучи объектов. рисовать 1000 объектов по 1000 полигонов ето совсем не то же самое, что 10 по 100 000. второе быстрее (при условии что все объекты выводятся на екран)
(Offline)
 
Ответить с цитированием
Старый 23.07.2008, 23:47   #4
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

А если сделать кадров при експорте модели в шкале анимации в максе минимум то файл будет весить меньше - спасибки внизу жать есче
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 00:15   #5
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

Dstorton111
1. Что быстрее LoadMesh vs LoadAnimMesh?
Одинаково при загрузке.
Разница в обработке.
У тебя как и верно сказал ХолиДел уровень состоит из кучи объектов.
Один объект - один батч при рендере.
10 000 объектов - 10 000 батчей.
Это здорово тормозит игру
А Блитз особенно критичен к количеству Ентити
(т.к. когда ты грузишь Аниммешем то каждый объект из макса - это энтити)
Когда ты грузишь LoadMesh - все объекты объединяются в один , ентити получается один и тормозов в разы(!) меньше.
Решение:
№0. Юзать LoadMesh
№1. Если приспичило LoadAnimMesh то тогда объедини все объекты в один в редакторе графики (3ds max например) и уже в таком виде экспортируй в Блитз. Не объединяй только то, что тебе действительно нужно и из-за чего нельзя юзать LoadMesh
Если ты не знаешь подобных случаев - не заморачивайся (это отдельная песня зачем и почему иногда нельзя использовать LoadMesh а нужно именно LoadAnimMesh как-нибудь долгими зимними вечерами расскажу), юзай решение №0

Правило хорошего Блитзера № 113 - всегда минимизируй кол-во энтити

2.
а что когда мой проект разрастётся скажем до 500 тыс.полигонов?
При юзанье комманды HideEntity я так догнал что свобода настаёт только рендеру но не как не ОЗУ моей видеокарты?
Угу, освобождается только рендер.
Это удобно когда нужно часто скрывать/показывать некоторые объекты
Потому что если ты выкинул из памяти что-то то если тебе потом приспичит это показать, то придётся грузить с винта а это жжжуткий тормоз.

Правило хорошего блитзера №238 - никогда не грузи ничего с винчестера во время игры.

Далее.
Не хватит ОЗУ - полезет в файл подкачки - только и всего
Правда этот самый файл подкачки находится на винте, а это... (см. выше)
Но я не думаю что тебе удастся заср*ть 1 Гб ОЗУ (средний сегодняшний компьютер). Так что спи спокойно.

Кстати! Для экономии памяти стоит удалять уже заюзанные текстуры!
Например так:
Tex = LoadTexture("texture.dds")
ball = CreateSphere(16)
EntityTexture ball,tex
FreeTexture tex

Правило хорошего блитзера №96 - всегда удаляй текстуры после их использования!


Надеюсь, развёрнуто и понятно всмё объяснил. Удачи!
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 12:11   #6
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

Сообщение от ABTOMAT Посмотреть сообщение
Dstorton111
Кстати! Для экономии памяти стоит удалять уже заюзанные текстуры!
Например так:
Tex = LoadTexture("texture.dds")
ball = CreateSphere(16)
EntityTexture ball,tex
FreeTexture tex
Правило хорошего блитзера №96 - всегда удаляй текстуры после их использования!
разве в Direct3D память под текстуры управляется не счетчиком ссылок?
т.е. ты можешь удалить текстуру, но она уже используется кучей мешей и refcount у нее больше нуля (т.е. текстура все еще в памяти).
так что насчет экономии не получится. просто не сможешь новые меши текстурить этой текстурой...
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 12:52   #7
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

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

LoadMesh и LoadAnimMesh разные вещи, и их сравнивать нельзя.

Ещё есть в DX такой моммент, что память в ДХ9 прилоениях заполняется только после первого рендеринга объекта, до этого он какбы находится в ней, но не в памяти (незнаю как объяснить, т.к. сам не разбирался, но заметил этот моммент в дх сдк, пару демках).
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 13:11   #8
ffinder
Дэвелопер
 
Аватар для ffinder
 
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений
(для 1,460 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

Сообщение от MoKa Посмотреть сообщение
Текстура останется в памяти, но ссылки на неё и её управление будет уже не доступны, это освобождает немного память..
эээ... выигрыш в 8(к примеру) байт (указатель на текстуру и на vtable)???
Сообщение от MoKa Посмотреть сообщение
LoadMesh и LoadAnimMesh разные вещи, и их сравнивать нельзя.
все можно сравнивать, главное определить критерии
Сообщение от MoKa Посмотреть сообщение
Ещё есть в DX такой моммент, что память в ДХ9 прилоениях заполняется только после первого рендеринга объекта, до этого он какбы находится в ней, но не в памяти (незнаю как объяснить, т.к. сам не разбирался, но заметил этот моммент в дх сдк, пару демках).
это как?
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 13:30   #9
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

на самом деле, создается браш - и туда копируется текстура. зачем так сделали авторы блица - хз.
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 15:08   #10
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

ХЗ-то хз но ОЗУ освобождается - это факт.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 16:47   #11
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

HolyDel, я скорее считал что есть брашь - он наложен на сюрфейс, а текстура вкладывается в брашь при наложении на сюрфейс (при наложении на энтити, все его браши получают эту текстуру, и от сюда все сюрфейсы). Разве не так?
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 16:57   #12
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

тогда при удалении текстуры был бы мав. скорее всего при первом наложении куда либо - делается браш (копируется текстура). и дальше, по возможности используется етот браш. а текстуру можно стирать. а у себя в двиге я вообще по дефолту держу копию текстуры в системной памяти, на всякий пожарный.
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 17:14   #13
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

По мне так представляется так: Есть эллемент, в нём инфа и указатель на текстуру.
Также есть брашь. При наложении на голый сюрфейс, надаж брашь создать. Или он будет автоматически создан. Таким образом в браше уже будет хранится указатель на саму текстуру, а не на эллемент.
При удалении браша текса то останется. А если она нигде не юзается то удаляется - по сути это задача менеджера ресурсов.
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 17:42   #14
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

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

DebugLog TotalVidMem()
DebugLog AvailVidMem()

Graphics3D 800,600,32,2

cam=CreateCamera()
PositionEntity cam,0,0,-5
RenderWorld()
DebugLog AvailVidMem()
tex = CreateTexture(1024,1024)
b = TextureBuffer(tex)
For i=0 To 1023
	For j=0 To 1023
		WritePixel(i,j,Rnd(2^32),b)
	Next
Next
RenderWorld()
DebugLog AvailVidMem()

cube = CreateCube()
EntityTexture cube,tex
RenderWorld()
DebugLog AvailVidMem()

FreeTexture tex
RenderWorld()
DebugLog AvailVidMem()

;FreeEntity cube
RenderWorld()
DebugLog AvailVidMem()


While Not KeyDown(1)
	
	TurnEntity cube,0,1,0
	
	RenderWorld
	Flip
	
Wend

DebugLog AvailVidMem()
FreeEntity cube
RenderWorld()
DebugLog AvailVidMem()

EndGraphics
DebugLog AvailVidMem()
Stop
End
(Offline)
 
Ответить с цитированием
Старый 24.07.2008, 17:54   #15
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Что быстрее LoadMesh vs LoadAnimMesh?

HolyDel, да есть такие приколы. По сути там менеджер работает хитро
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите русскоязычный ресурс по Irrlicht ISKATEL C++ 1 22.10.2009 01:02
Проблема со шрифтом на сайте WARRIOR Blitz3D 3 10.05.2009 04:53
Помогите, вылетает Invalid Memory Acces MadMedic PureBasic 3 08.10.2008 07:02
Полный ксорс и ещё кое что Silver 3D-программирование 59 18.02.2008 22:15
не могу в Physx поворачивать Joint быстро, помогите! CRASHER Физика 18 12.01.2008 17:55


Часовой пояс GMT +4, время: 00:22.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com