Пятница, 17.05.2024, 08:33
Приветствую Вас Гость | RSS
Главная | Оптимальный рендер движка - Форум | Регистрация | Вход
Direct3D. Разработка игр
Форма входа
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Direct3D для продвинутых » Движок » Оптимальный рендер движка
Оптимальный рендер движка
DoomCrossДата: Вторник, 04.03.2008, 17:47 | Сообщение # 1
Admin
Группа: Администраторы
Сообщений: 34
Репутация: 3
Статус: Offline
Я сейчас делаю свой двиг. Возникла проблема с реализацией отрисовки объектов. Пробовал сделать самоотрисовку в класе - не получилось как-то...Теперь хочу реализовать отрисовку через массив. Если кто писал свой двиг, посоветуйте, какой метод отрисовки наиболее оптимальный. Или посоветуйте реализацию самоотрисовки.

Не мертво то, что в вечности живет.
Со смертью времени и смерть умрет.
--------------------------------------------
Visual C++ 2005, DirectX9.0 (November), Windows XP
 
BoosterДата: Вторник, 04.03.2008, 23:30 | Сообщение # 2
Рядовой
Группа: Пользователи
Сообщений: 19
Репутация: 0
Статус: Offline
Что значит самоотрисовка?
Я делал так: Есть чисто виртуальный базовый класс, у которого есть метод Draw, от него наследуются все другие классы объектов. Засовываем в массив (std::vector), объекты. А в сцене, опять же в Draw, у всех у них вызывается этот метод Draw. По-мойму дёшево и сердито.
Имхо объект сам себя отрисовать не может, максимум что можно сделать, чтобы объект сам себя добавил в очередь на отрисовку. Но только зачем? Гибкость при этои падает, не гоже объекту об этом знать и этим заниматься.
И ещё совет, не использовать конструктор для сложных и критичных действий. Например работу с файлом, в нем лучше не делать. Во первых конструктор не может известить о результате своих действий, во вторых его выполние может прерваться в середине, ну и в третьих кол-во их вызовов в разных компиляторах разное. Так что лучше завести отдельный метод, например Init.


Сообщение отредактировал Booster - Вторник, 04.03.2008, 23:43
 
genius101Дата: Воскресенье, 29.06.2008, 20:54 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 5
Репутация: 0
Статус: Offline
пару советов по оптимизации отрисовки:

1) и самый важный свет не выполняйте весомые вычилнения после BeginScene и до EndScene то есть лишние вычисления не отнасящиеся к рендрингу...
2) вызывайте как можно меньще DIP"ов DIP(DrawIndexedPrimitive) !
3) не советую юзать ID3DXMesh!

а теперь на счёт отрисовки всех обьектов сцены:
юзай vector заганяй в него все созданые меши

ну и в функции отрисовка

достаеш каждый меш из вектора и рисуеш

пример:

void RenderScene()
{
for(int i=0;i<Meshes.count;i++)
{
Mesh* mesh = Meshes.get(i);
mesh->Draw();
}
}

Meshes.count - возвращает колличство созданых мешей...
Meshes.get(index) - возвращает меш по индексу...

я правдо не юзаю vector у меня свой vector wink


Novartis Games[Lead Programmer]

Инструментарий:VS C++ 2008,DirectX 9 SDK November

 
Форум » Direct3D для продвинутых » Движок » Оптимальный рендер движка
  • Страница 1 из 1
  • 1
Поиск:


Doom†Cross Software ® 2024
Создать бесплатный сайт с uCoz