Достал из далёкого пыльного ящика свой старенький компьютер 2001г и нашел там оригинальную версию UnDelphiX. Самое интересное что на Delphi 7 Lite под Windows 10 компонентик ещё отлично работает. Собирается и даже рисует.
Возможно кто-то захочет сделать простую игрушку на стареньком DirectX 5.
В дополнение базовый пример как запустить Canvas, хотя насколько я помню намного проще было работать со Спрайтами. Та-же анимация делалась в три клика и 5 строчками кода. Советую заглянуть в папку Samples, там всё это есть.
unit unMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DXClass, DXDraws; type TfmMain = class(TDXForm) dxDraw: TDXDraw; dxTimer: TDXTimer; procedure dxTimerTimer(Sender: TObject; LagCount: Integer); procedure FormCreate(Sender: TObject); procedure dxDrawInitialize(Sender: TObject); procedure dxDrawFinalize(Sender: TObject); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private public end; var fmMain: TfmMain; implementation {$R *.dfm} procedure TfmMain.dxTimerTimer(Sender: TObject; LagCount: Integer); begin if not dxDraw.CanDraw then Exit; DXDraw.Surface.Fill(0); with dxDraw.Surface.Canvas do try Brush.Style := bsClear; Font.Color := clWhite; Font.Size := 30; Textout(30, 30, DateTimeToStr(Now)); TextOut(dxDraw.Surface.Width - 180, 30, Format('%d FPS', [dxTimer.FrameRate])); finally Release; end; dxDraw.Flip; end; procedure TfmMain.FormCreate(Sender: TObject); begin dxTimer.Interval := Round(1000 / 60); end; procedure TfmMain.dxDrawInitialize(Sender: TObject); begin dxTimer.Enabled := True; end; procedure TfmMain.dxDrawFinalize(Sender: TObject); begin dxTimer.Enabled := False; end; procedure TfmMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_ESCAPE then Close; if (ssAlt in Shift) and (Key=VK_RETURN) then begin dxDraw.Finalize; if doFullScreen in DXDraw.Options then begin RestoreWindow; dxDraw.Cursor := crDefault; BorderStyle := bsSizeable; dxDraw.Options := dxDraw.Options - [doFullScreen]; end else begin StoreWindow; dxDraw.Cursor := crNone; BorderStyle := bsNone; dxDraw.Options := dxDraw.Options + [doFullScreen]; end; dxDraw.Initialize; end; end; end.
object fmMain: TfmMain
Left = 192
Top = 107
Width = 544
Height = 375
Caption = 'UnDelphiX Canvas Basic'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
OnCreate = FormCreate
OnKeyUp = FormKeyUp
PixelsPerInch = 96
TextHeight = 13
object dxDraw: TDXDraw
Left = 0
Top = 0
Width = 536
Height = 348
AutoInitialize = True
AutoSize = True
Color = clBtnFace
Display.FixedBitCount = True
Display.FixedRatio = True
Display.FixedSize = False
Options = [doAllowReboot, doWaitVBlank, doCenter, doDirectX7Mode, doHardware, doSelectDriver]
SurfaceHeight = 348
SurfaceWidth = 536
OnFinalize = dxDrawFinalize
OnInitialize = dxDrawInitialize
Align = alClient
TabOrder = 0
end
object dxTimer: TDXTimer
ActiveOnly = True
Enabled = False
Interval = 1000
OnTimer = dxTimerTimer
Left = 8
Top = 16
end
end