Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

DirectDraw: создание поверхностей   Найти похожие ветки 

 
miek ©   (2004-03-04 20:21) [0]

Создаю две поверхности:
 
 DDrawObject.SetCooperativeLevel( form.handle,
   DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN or DDSCL_FPUSETUP);
 DDrawObject.SetDisplayMode( ScreenX, ScreenY, bpp);

 with SurfaceDescription do
   begin
     dwSize:= sizeof( SurfaceDescription);
     dwFlags:= DDSD_CAPS;
     ddsCaps.dwCaps:= DDSCAPS_PRIMARYSURFACE;
   end;
 DDrawObject.CreateSurface( SurfaceDescription, PrimarySurface, nil);

 with surfacedescription do
   begin
     dwSize:= sizeof( SurfaceDescription);
     dwFlags:= DDSD_CAPS or DDSD_WIDTH or DDSD_HEIGHT or DDSD_PIXELFORMAT;
     dwwidth:= screenx;
     dwheight:= screeny;
     ddpfPixelFormat.dwSize:= sizeof( surfacedescription.ddpfPixelFormat);
     ddpfPixelFormat.dwFlags:= DDPF_RGB;
     ddpfPixelFormat.dwRGBBitCount:= bpp;
     ddpfPixelFormat.dwRBitMask:= $007C00;
     ddpfPixelFormat.dwGBitMask:= $0003E0;
     ddpfPixelFormat.dwBBitMask:= $00001F;
     ddscaps.dwCaps:= DDSCAPS_OFFSCREENPLAIN;
   end;
 DDrawObject.CreateSurface( SurfaceDescription, SecondarySurface, nil);

Все работает прекрасно (перенос делаю через BltFast), только содержимое второй поверхности интерпретируется как RGB 5-6-5 вместо 5-5-5, несмотря на флаги. Естественно, все цвета "ползут". Как переубедить DirectDraw? Или это от видеокарты зависит и не лечится?


 
cyborg ©   (2004-03-04 21:40) [1]

Создаётся только такое, какое имеется у главной/первичной поверхности.
Видимо всё создаётся как 565, а зачем вобще делать 555, если можно 565? ;) оно всё равно 16 бит занимает, и похоже, что не все видеокарты поддерживают режим 555.


 
miek ©   (2004-03-05 20:40) [2]

Странно получается - S3 Virge держит 555, а GeForce2 - нет. А мне весьма надо 555, так как SpriteUtils только с ним работает.


 
miek ©   (2004-03-05 21:33) [3]

Екарный бабай! Кроме 16-битного режима, вообще ничто не пашет! Просто меняю на 24 или 32, и вообще не работает.


 
cyborg ©   (2004-03-05 22:26) [4]

Поверхности будут создаваться битового формата главной поверхности.
К томуже что это за структура ddpfPixelFormat заполняется, которая не используется потом?


 
cyborg ©   (2004-03-05 22:28) [5]


> которая не используется потом

Пардон, не обратил внимания на with surfacedescription do


 
cyborg ©   (2004-03-05 22:30) [6]

> А мне весьма надо 555, так как SpriteUtils только с ним
> работает.

Ну сделай, чтобы 565 поддерживало, на бит сдвиги влево увелич и всего делов.


 
miek ©   (2004-03-06 09:46) [7]

>Ну сделай, чтобы 565 поддерживало, на бит сдвиги влево увелич и всего делов.

Всего делов - этак 5000-10000 строк кода добавить!

Но хрен с ним, с 16-битным, мне бы хоть в каком-нибудь рисовать нормально. Почему 32-бита не работает, не въеду никак.


 
cyborg ©   (2004-03-06 10:08) [8]


> Почему 32-бита не работает, не въеду никак.

Ошибки значит наделал, ищи.


> Всего делов - этак 5000-10000 строк кода добавить!

Чего это у тебя там понаписано? По идее, всего нужно исправить конвертер цвета, строчки 3-4.


 
miek ©   (2004-03-06 10:16) [9]

>Ошибки значит наделал, ищи.
Все! Я разобрался с этой фигней. Предлагаю посмотреть на рабочую демку;

www.miek.narod.ru/dxplatforms.zip

Сверхвысоких FPS не наблюдается, конечно. Но надо учесть, что все рисуется софтварно и каждый кадр пересылается из системной памяти по таймеру(!). Да и скорости вполне хватит на клон, допустим, "Космических рейнджеров". Скоро SpriteUtils-2 будет конкурировать с PowerDraw!


 
miek ©   (2004-03-25 16:40) [10]

Продолжение. Теперь в режиме 8-бит (Uniform), для удобства.

www.miek.narod.ru/dxplatforms.zip



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
14-1084535399
Соловьев
2004-05-14 15:49
2004.05.30
У кого-то получилось откомпилить клиента форума - DMClient?


14-1084300671
Vasya.ru
2004-05-11 22:37
2004.05.30
где взять 6ти знак?


3-1083741652
Demoniak
2004-05-05 11:20
2004.05.30
Удаление некоторых записей


1-1084884672
DimonNew
2004-05-18 16:51
2004.05.30
TreeView


1-1084863703
Dysan
2004-05-18 11:01
2004.05.30
указать дату создания файла?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский