Помогите с блиттингом (Direct Draw)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Помогите с блиттингом (Direct Draw)

Сообщение Tarantul » 15.01.2005 (Сб) 17:21

...

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 15.01.2005 (Сб) 17:22

Я вот заметил, что скорость блиттинга одной поверхности в другую практически не зависит от размеров исходной и целевой области. Поэтому, образ размером 32x32 блиттается с той - же скоростью, что и 1024 x 768.
А я строю изображение на экране мозаичным путем из квадратов 32x32, каждый из которых имеет свою текстуру, и функция BLT вызывается 768 раз, что тянет прилично времени (около десятка милисекунд) :cry: Причем у меня Pentium 2.66 с видеокартой GeForce FX 5700.

Так можно ли это как - то ускорить, или я каким - то калечным способом пользуюсь :?: :?: :?:

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 15.01.2005 (Сб) 17:22

Я вот заметил, что скорость блиттинга одной поверхности в другую практически не зависит от размеров исходной и целевой области. Поэтому, образ размером 32x32 блиттается с той - же скоростью, что и 1024 x 768.
А я строю изображение на экране мозаичным путем из квадратов 32x32, каждый из которых имеет свою текстуру, и функция BLT вызывается 768 раз, что тянет прилично времени (около десятка милисекунд) :cry: Причем у меня Pentium 2.66 с видеокартой GeForce FX 5700.

Так можно ли это как - то ускорить, или я каким - то калечным способом пользуюсь

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 15.01.2005 (Сб) 17:23

Я вот заметил, что скорость блиттинга одной поверхности в другую практически не зависит от размеров исходной и целевой области. Поэтому, образ размером 32x32 блиттается с той - же скоростью, что и 1024 x 768.
А я строю изображение на экране мозаичным путем из квадратов 32x32, каждый из которых имеет свою текстуру, и функция BLT вызывается 768 раз, что тянет прилично времени (около десятка милисекунд) Причем у меня Pentium 2.66 с видеокартой GeForce FX 5700.

Так можно ли это как - то ускорить, или я каким - то калечным способом пользуюсь ?

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 15.01.2005 (Сб) 17:25

Извините что так много, просто у меня были глюки с интернетом...

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 15.01.2005 (Сб) 18:14

А ты куда "блитишь" ? сразу на HDC выводящего объекта или в память ?

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 15.01.2005 (Сб) 18:58

А ты куда "блитишь" ? сразу на HDC выводящего объекта или в память ?

В задний буффер, т.е. в память.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 16.01.2005 (Вс) 20:43

Ну так что, кто - нибудь чето подскажет :?:

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 17.01.2005 (Пн) 12:23

Каждый тайл - отдельная поверхность, или они части одной?
У меня был глюк. Когда маленькие тайлы вырезалсь из большой поверхности. Там когда я умеьшил исходную поверхность. скорость увеличилась в 5 раз.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 17.01.2005 (Пн) 16:52

Действительно, у меня вырезается из рисунка размером 256x256 и это занимает где-то 10 мс. А чистое замощение экрана блоками 32x32, которые блиттаются из поверхностей 32x32, длится 4,5 мс. Мне кажется что это тоже многовато :(
А может можно как то ускорить через CopyMemory :?:

Dagobert
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 141
Зарегистрирован: 21.12.2002 (Сб) 6:48
Откуда: Russia

Сообщение Dagobert » 20.01.2005 (Чт) 9:41

Я видел движок, в котором экран разделялся на "грязные" области, требующие перерисовки. Остальное не изменялось. Все это хранилось на буферной поверхности.

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 20.01.2005 (Чт) 17:49

М-да, можно попробовать, спасибо...


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот и гости: 11

    TopList