Форум: "Игры";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c