Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "Media";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1084633198
Ivolg
2004-05-15 18:59
2004.05.30
Memo


11-1073310593
Yura
2004-01-05 16:49
2004.05.30
замена стандартных модулей на Kol


14-1084360870
bon
2004-05-12 15:21
2004.05.30
Как отменить все сообщения, посылаемые окну?


3-1084045511
linx
2004-05-08 23:45
2004.05.30
Как выводить Фамилию Имя Отчество?


14-1084368392
a3a3ello
2004-05-12 17:26
2004.05.30
delphi и XP





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский