Вторник, 13 Апреля 2021, 08:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Помощь с DirectX (Нужна некоторая консультация насчет скорости в DirectX)
Помощь с DirectX
DemeronДата: Воскресенье, 17 Июля 2011, 11:20 | Сообщение # 1
User created in C++
Сейчас нет на сайте
Здравствуйте, я хотел бы попрость помощи, а вернее совета в реализации моего движка (gcup2DE). Проблема в том, что я не могу понять, "нормально" ли он работает, ведь при 2000 спрайтах выводит ~30фпс (при точечных примерно в 2 раза больше).
Так вот, тот же HGE работает быстрее, но в нём некоторое отличие:
У меня: Лок буффера в начале отрисовки, заполенение буффера всеми объектами, унлок буфера, рисование.
В HGE: При каждом рисуемом объекте происходит лок буффера, заполнение, унлок и рисование.

Теперь вопрос: давненько, когда только начал делать движок я пробывал систему как в HGE - разницы было почти 0 и поэтому я вернулся к старой отрисовке (мне удобнее), но сейчас отрисовка у меня усложнилась, и хотелось бы услышать, даст ли способ из HGE хоть какой-то прирост производительности, ведь переписывать ку-у-учу строк не зная наверняка что будет какой-то толк мне не хочеться.

PS: Возможно проблема такой маленькой производительности в матрицах? Ведь я каждую отрисовку объекта меняю матрицу мира (WORLD).

PSS: Тест машина: AMD Athlon 2000+ (1.5 ггц), 128 видеокарта (9600), 1 гиг оперативы.
zodiakДата: Воскресенье, 17 Июля 2011, 12:17 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Demeron,
Релиз или дебаг сборка?
Для релиза и 2000 спрайтов(64х64 с альфасмешиванием) нормально 250 - 300 фпс. Где то ты напортачил, не обязательно с графикой. Попробуй вместо шаманства с буферами использовать D3DXSprite.
Кроме того буфер можно и не лочить. Дай каждому спрайту свой да и все.

зыЖ Скорее всего матрицы не при чем, они быстрые, использование простое, менять их для каждого объекта нормально. Считаешь вручную, или стандартными средствами?


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net


Сообщение отредактировал zodiak - Воскресенье, 17 Июля 2011, 12:19
DemeronДата: Воскресенье, 17 Июля 2011, 12:22 | Сообщение # 3
User created in C++
Сейчас нет на сайте
Quote (zodiak)
Релиз или дебаг сборка?

Дебаг
Quote (zodiak)
Попробуй вместо шаманства с буферами использовать D3DXSprite.

Читал что он очень медленно работает, да и не хочеться с ним работать...
Quote (zodiak)
Кроме того буфер можно и не лочить.

Тоесть? surprised
Quote (zodiak)
Дай каждому спрайту свой да и все.

Установка нового буффера очень ресурсоемкая процедура, она может занять до 100мс, а если таких буфферов 100? То вобще если 5 фпс будет выдавать я от щастья прыгать буду))) wink
KornivalДата: Воскресенье, 17 Июля 2011, 15:55 | Сообщение # 4
The Witcher
Сейчас нет на сайте
Demeron, какой у тебя выдает fps при рисовании 2000 спрайтов, к примеру, тем же HGE?
DemeronДата: Воскресенье, 17 Июля 2011, 20:38 | Сообщение # 5
User created in C++
Сейчас нет на сайте
Quote (Kornival)
Demeron, какой у тебя выдает fps при рисовании 2000 спрайтов, к примеру, тем же HGE?

Значительно выше, ведь в HGE 500 спрайтов рисуються с фпс 300-350, а у меня ~200 фпс.

Добавлено (17.07.2011, 20:38)
---------------------------------------------
Почитав литературу, пришла мысль что вариант HGE более практичен и быстр ибо:
Мой вариант: видеокартка ждёт и процессор заполняет массив, процессор ждёт а видеокарта рисует
HGE: видеокарта и процессор работает почти паралельно, но лудше всё рисовать блоками

zodiakДата: Понедельник, 18 Июля 2011, 14:33 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Quote (Demeron)
Установка нового буффера очень ресурсоемкая процедура, она может занять до 100мс, а если таких буфферов 100? То вобще если 5 фпс будет выдавать я от щастья прыгать буду)))


В кадре может быть хоть милион буферов. 3Д модель это как минуимум один буфер. Задержки могут быть при их создании, а не установке (SetStreamSource).


Точка зору окремо взятого індивіда завжди суб'єктивна!

Взломщик
Battle City.Net
DemeronДата: Понедельник, 18 Июля 2011, 15:31 | Сообщение # 7
User created in C++
Сейчас нет на сайте
Quote (zodiak)
В кадре может быть хоть милион буферов. 3Д модель это как минуимум один буфер. Задержки могут быть при их создании, а не установке (SetStreamSource).

Ну, может ты и прав, спорить не буду))

Ну всё-таки я сделал как в HGE, изменил работу с текструрами, немножко подправил код и теперь у меня ~40-42 фпс при 4000 точечных спрайтах, ну уже что-то cool
nilremДата: Понедельник, 18 Июля 2011, 17:20 | Сообщение # 8
Просветленный разум
Сейчас нет на сайте
Quote (Demeron)
у меня ~40-42 фпс при 4000 точечных спрайтах


Мало. У меня в движке такой фпс при 20000 17000 спрайтов. видео GF8600gta, спрайты 52/52 c альфаблендингом. При этом размер окна 800 на 600 (с ХГЕ мерился там по умолчанию как раз такое). И да еще - спрайты анимированные.
Так что где-то у тебя бяка. Используй профилировщик.


Windmill 2

WindMill 2D Game Engine
Форум игроделов » Программирование » C/C++ » Помощь с DirectX (Нужна некоторая консультация насчет скорости в DirectX)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2021 Рейтинг