Достал из далёкого пыльного ящика свой старенький компьютер 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