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

Вниз

DerectDraw - SetPalette   Найти похожие ветки 

 
Zergling ©   (2003-10-03 12:52) [0]

Доброго Всем дня! Это вновь я с освоением DirectX :). Почемута не устанавливается палитра :(.

var
{ DirectX }

 lpDD7: IID_IDirectDraw7 = Nil;
 lpDDSurface: IID_IDirectDrawSurface7 = Nil;

 // палитра на 256 цветов
 lpDDPal: IID_IDirectDrawPalette = Nil;
 palette: array [0..255] of tagPALETTEENTRY;
 // Первичная поверхность
 ddsf: DDSURFACEDESC2;

 // Заполнение палитры
   for I := 1 to 254 do
     with palette[I] do
     begin
       peRed := Random(256);
       peGreen := Random(256);
       peBlue := Random(256);
       // Не оптимизировать палитру
       peFlags := PC_NOCOLLAPSE;
     end;
   with palette[0] do
   begin
     peRed := 0;
     peGreen := 0;
     peBlue := 0;
     peFlags := PC_NOCOLLAPSE;
   end;
   with palette[255] do
   begin
     peRed := 255;
     peGreen := 255;
     peBlue := 255;
     peFlags := PC_NOCOLLAPSE;
   end;

   // Заполнение описания первичной поверхности
  // FillChar(ddsf, SizeOf(ddsf), #0);
   with ddsf do
   begin
     dwSize := SizeOf(DDSURFACEDESC2);
     // Задание поле (высота и ширина по умолчанию)
     dwFlags := DDSD_CAPS;
     // Запрос первичной поверхности
     ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE;
   end;
   // Создание интерфейса DirectX 7
   if DirectDrawCreateEx(Nil, lpDD7, IID_IDirectDraw7, Nil) <> DD_OK then SRep.Add("No D7");
   // Выбор выдекарты по умолчанию
   if lpDD7.SetCooperativeLevel(WC_HWND, DDSCL_FULLSCREEN or DDSCL_EXCLUSIVE or DDSCL_ALLOWMODEX or DDSCL_ALLOWREBOOT)  <> DD_OK then SRep.Add("No Level");
   // Содание палитры
   if lpDD7.CreatePalette(DDPCAPS_8BIT or DDPCAPS_ALLOW256 or DDPCAPS_INITIALIZE, @palette, lpDDPal, Nil) <> DD_OK then SRep.Add("No Pallete");
   // Создание первичной поверхности
   if lpDD7.CreateSurface(ddsf, lpDDSurface, Nil) <> DD_OK then SRep.Add("No Surface");
   // Присоединение палитры к первичной поверхности
   // Ошибка в этой строке - результат не есть хорошо
   if lpDDSurface.SetPalette(lpDDPal) <> DD_OK then SRep.Add("No SetPallete");
   // Установка видео режима
   if lpDD7.SetDisplayMode(640, 480, 8, 0, 0) <> DD_OK then SRep.Add("No DysplayMode");
   SRep.SaveToFile("C:\DX.TXT");


 
Sapersky ©   (2003-10-04 10:49) [1]

Сначала SetDisplayMode, а потом CreateSurface. А то поверхность создаётся с форматом  пикселей рабочего стола, со всеми вытекающими.



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

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

Наверх




Память: 0.47 MB
Время: 0.147 c
14-1079539569
LameFox
2004-03-17 19:06
2004.04.11
Восстановление удаленных файлов


6-1075706268
dimonf
2004-02-02 10:17
2004.04.11
Как распознать по кокому протоколу работает WinSoket?


14-1082358874
Cosinus
2004-04-19 11:14
2004.04.11
Поздравьте меня с моим первым полученным спамом по SMS.


14-1079600569
Graf
2004-03-18 12:02
2004.04.11
Запуск дочернего приложения


1-1082548702
rams
2004-04-21 15:58
2004.04.11
Можно ли поменять цвет "закрашивания" ProgressBar