Главная страница
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.039 c
1-1080159329
GetIt
2004-03-24 23:15
2004.04.11
Заставить кнопку закрыть форму-владельца


11-1059059557
_Polymorphic_
2003-07-24 19:12
2004.04.11
KOLmdvXLGrid. Изменение размеров колонок.


1-1082631546
CraKer
2004-04-22 14:59
2004.04.11
Курсор..


8-1071123676
Gray
2003-12-11 09:21
2004.04.11
Записать сигнал с линейного входа


4-1075476396
GrayFace
2004-01-30 18:26
2004.04.11
Как управлять Winamp ом?