Оконный режим и DirectDraw

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Оконный режим и DirectDraw

Сообщение Odrick » 18.11.2004 (Чт) 19:36

Проблема следующая. Каким образом организовать back-буфер при работе с DirectDraw в оконном режиме. Attached Surface не проходит, естественно :) Создаю невидимый surface, помещаю на него с помощью BltFast все, что мне нужно, и в конце переношу с помощью того же BltFast на Primary Surface. В результате - пустота. При прямом BltFast на Primary Surface все работает. Но ведь мигает, блин. Заранее всем спасибо :)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.11.2004 (Чт) 19:51

Вроде, в окне и надо рисовать на ddsPrimary... Сейчас поточнее скажу...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.11.2004 (Чт) 19:56

Вот так:

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 24.11.2004 (Ср) 0:19

Извиняюсь за долгое молчание - не было времени. В принципе все правильно, но в этом то и был вопрос. Рисование напрямую на первичную поверхность не подходит, так как нужно рисовать несколько сотен спрайтов, что влечет за собой видимое "мигание" изображения :( А нужно организовать back-буфер, в котором рисунок предварительно будет "собираться", а потом уже выносить одним Blt на первичную поверхность.

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 24.11.2004 (Ср) 21:29

Пока сам ничего не нарыл кроме того, что знал. Блин, неужели никто не юзал DirectDraw в окне ? :(

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 02.12.2004 (Чт) 1:12

Кажись нашел. Да прамо на этом сайте... Если кого-то интересует, рекомендую сходить по ссылке http://www.vbstreets.ru/VB/Articles/65965.aspx - там все очень подробно описано в 5-ой статье :D.

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 02.12.2004 (Чт) 2:13

Щас в MapEditor'е посмотрю. Вот нашел:
Код: Выделить всё

Dim ddsdBackBuffer As DDSURFACEDESC2
    ddsdBackBuffer.lFlags = DDSD_CAPS Or DDSD_HEIGHT Or DDSD_WIDTH
   ddsdBackBuffer.ddsCaps.lCaps = DDSCAPS_OFFSCREENPLAIN Or DDSCAPS_SYSTEMMEMORY


    ddsdBackBuffer.lWidth = pic.ScaleWidth
    ddsdBackBuffer.lHeight = pic.ScaleHeight 


  Caps.lCaps = DDSCAPS_BACKBUFFER
  Set ddsBack = dd.CreateSurface(ddsdBackBuffer)
الفيجوال بيسك الرابح

Odrick
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 503
Зарегистрирован: 28.09.2003 (Вс) 2:04

Сообщение Odrick » 02.12.2004 (Чт) 20:39

Спасибо. В принципе в этой статье так и написанно :D .


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

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

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

    TopList  
cron