![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Простенькая программка на DirectX [Delphi, Windows]
delpher_gray © (2004-03-14 22:03:00)Хочу разобраться с DirectX'ом, вот написал небольшой код программ, которая должна выводить изображение на экран, но в коде есть ошибка, и не знаю из-за чего :(
Вот код:
...
var
Msg: TMSG;
Wnd: hWnd;
Wce: WNDCLASSEX;
Cancel: boolean;
DDraw: TDirectDraw;
DDSPrimary, DDSOne, DDSBack: TDirectDrawSurface;
Game: TGame;
...
procedure TGame.DoInit;
var
Desc: TDDSurfaceDesc;
Caps: TDDSCAPS;
begin
try
DDraw := TDirectDraw.Create(nil);
DDraw.SetCooperativeLevel(Wnd, DDSCL_EXCLUSIVE or DDSCL_FULLSCREEN);
DDraw.SetDisplayMode(1024, 768, 16);
Desc.dwSize := SizeOf(Desc);
Desc.dwFlags := DDSD_CAPS or DDSD_BACKBUFFERCOUNT;
Desc.ddsCaps.dwCaps := DDSCAPS_PRIMARYSURFACE or
DDSCAPS_FLIP or
DDSCAPS_COMPLEX;
Desc.dwBackBufferCount := 1;
DDSPrimary := TDirectDrawSurface.Create(DDraw, Desc);
Caps.dwCaps := DDSCAPS_BACKBUFFER;
DDSBack := DDSPrimary.GetAttachedSurface(Caps);
DDSOne := DDraw.LoadBitmap(SpriteFile, 256, 256);
except
on Exception do
begin
ShowMessage('DirectDraw init failed !');
Game.Finish;
raise;
end;
end;
end;
...
procedure TGame.OnDraw(X, Y: integer);
var
Rect: TRect;
begin
SetRect(Rect, 0, 0, 1024, 768);
DDSBack.BltFast(X, Y, DDSOne, @Rect, DDBLTFAST_WAIT); // Тут ошибка !!
DDSPrimary.Flip(nil, DDFLIP_WAIT);
end;
Ошибка вылазеет когда я пытаюсь вывести изображение на экран, а почему !?
Заранее благодарен.
Kobik (2004-03-15 19:46:00) [1]>> SetRect(Rect, 0, 0, 1024, 768);
Может 1, 1, 1024, 768
или 0, 0, 1023, 767 ?