Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скорость воспроизведения в Direct3D, Direct 3D 
:(
    Опции темы
Bitter
Дата 18.12.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Всем привет.

Возникло у меня два спорных вопроса, а именно:
 
1. Использование индексного буфера увеличивает скорость воспроизведения? То, что этот способ значительно экономит память, я знаю, меня интересует именно скорость воспроизведения.

2. Программирование без VCL увеличивает скорость воспроизведения? Ведь в этом случае в качестве таймера используется обычный while, а не какие-нить там системные таймеры.

И вообще, может есть еще какие-нить способы повысить скорость воспроизведения? Я это к тому, что постоянно вижу игры, в которых куча полигонов рисуется в миг, а у меня, 1-2 тысячи и всёёёё тормозаааа. Хотя конечно я пишу на Delphi 7, но думаю, что особой разницы нет, так как  вроде в 7-м компилятор снабжен какими-то оптимизаторами кода, так что... 

Вобщем, у кого какие мысли? Всем спасибо.

PM MAIL ICQ Skype   Вверх
Bitter
Дата 25.12.2006, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Вот некоторые тонкости, которые позволяют увеличить скорость работы графического приложения:
1.Размеp пакета данных. Чем больше полигонов будет прорисовано за один вызов процедуры DrawPrimitive, тем быстрее прорисуется кадр. Хоpошим показателем является рисование объектов, в сpеднем, более 100 полигонов за один вызов упомянутой процедуры.

2. Изменение режима воспроизведения. Функции SetRenderState являются "доpогими" опеpациями, особенно смена текстуp. По этой пpичине, важно минимизиpовать вызовы данной функции при перерисовке каждого кадpа. 

3. Параллельные потоки. Увеличивае производительность и распараллеливание потоков на Рендеринг и Расчет.

4. Использование нескольких буфеpов вершин. К сожалению, ничего по этому поводу сказать не могу, однако такую версию слышал.

5. Загpузка текстуp. Загpузка текстуp в видео память уменьшает её размеры. Следовательно меньше места остается под вершины, и следовательно, они будут расположены в системной памяти. 

6. Смена контекста. Пеpеключение с 3D- на 2D-опеpации, такие как опеpации блиттинга (blitting) или блокиpования (locking) повеpхности кадpа могут вызвать большие затраты времени. По этой пpичине следует избегать подобных опеpаций насколько это возможно. Большинство 2D-компонент сцены, такие как инфоpмационные панели, к пpимеpу, могут быть выполнены чеpез 3D-пpимитивы, как пpавило повышая пpоизводительность.

Ну и на последок, ещё один трюк, который, может кому-то известен (может он не совсем относится к графике, но всё же):

Если есть два цикла: по n и по p, при этом n>p (например n=100, а p= 1000), то конструкция:

for i := 1 to n do
 for j := 1 to p do

работает быстрее, чем 

for j := 1 to p do
 for i := 1 to n do

хотя казалось бы....

А по поводу заданных мной вопросов, я выяснил, что использование индексного буфера всё таки повышает производительность, так как процессор в данном случае, вычисляет меньшее количество матриц трансформаций. А вот на счет VCL, я так и не выяснил.

Это сообщение отредактировал(а) Bitter - 25.12.2006, 04:05
PM MAIL ICQ Skype   Вверх
Beltar
Дата 25.12.2006, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



Я буквально только что начал изучать DirectX. Тоже на Delphi Приобрел кижечку Фленова. Первое с чего там начинается первый проект это удаление из него формы и забывание, что она там есть. smile Дальше все на голом API. Если глянуть в исходники VCL, то пока дойдешь до уровня API запариться можно, так что безо всех этих прослоек д/б быстрее. smile


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Beltar
Дата 25.12.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: нет
Всего: 7



Кстати, такой вопрос, стоит ли вообще связываться с DirectDraw. По нему много материалов, но он с DX 8 уже не развивается. Не проще ли даже 2D-графику делать в D3D?


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Bitter
Дата 25.12.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Цитата

Не проще ли даже 2D-графику делать в D3D? 


В основном так и делают. для этого есть класс ID3DXSprite.
PM MAIL ICQ Skype   Вверх
arilou
Дата 26.12.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


Профиль
Группа: Экс. модератор
Сообщений: 2646
Регистрация: 15.7.2004
Где: город-герой Минск

Репутация: 6
Всего: 61




 ! 
arilou
Beltar, пожалуйсьа один топик - один вопрос



--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.