Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DirectDraw ohne Vollbild/Bild direct auf Graka ausgeben (https://www.delphipraxis.net/76670-directdraw-ohne-vollbild-bild-direct-auf-graka-ausgeben.html)

SirThornberry 7. Sep 2006 21:40


DirectDraw ohne Vollbild/Bild direct auf Graka ausgeben
 
Ich muss mehrere Bilder in relativ kurzer Zeit auf dem Bildschirm ausgeben. Bisher hab ich das mit BitBlt gemacht. Allerdings steigt die Prozessorauslastung dabei stark an.
Also dachte ich mir ich zeischne direkt auf die Grafikkarte (müsste ja irgendwie gehen?)
Schließlich hab ich dann auch ein Tutoral auf unter
http://www.dsdt.info/tutorials/direct3d/?page=2
Allerdings wird bei dem Beispiel sofort bei Programmstart in den Vollbildmodus geschaltet. Gibt es eine Möglichkeit direkt auf die Graka zu "malen" ohne in einen Vollbildmodus zu wechseln? Wenn ja: Wie?

Wenn ich wie im Tutorial beschrieben den Fenstermodus nutze sehe ich überhaupt nix, so als hätte ich gar nix mit Direct3D etc. gemacht.

Mein Ziel ist es ein Bitmap irgendwie direkt auf die Grafikkarte zu schreiben - nur Wie

himitsu 8. Sep 2006 12:22

Re: DirectDraw ohne Vollbild/Bild direct auf Graka ausgeben
 
Such mal andere Direct3D Beispiele.
Also mehr Allgemeinere, denn möglich ist es schon dieses nur in einen kleinen Bereich auszugeben.

Kenn mich damit ja nicht aus, aber kombinieren sollten die sich bestimmt lassen. :angel:

JasonDX 8. Sep 2006 12:57

Re: DirectDraw ohne Vollbild/Bild direct auf Graka ausgeben
 
Ja, es ist natuerlich moeglich, die Ausgabe eines Devices nur auf einen bestimmten Teil des Bildschirms zu beschraenken. Dies wird ueber die Eigenschaft von "Windowed" bei den PresentationParameters angegeben.
Ich hab zwar nicht den Source aus dem Tutorial genommen, aber das sollte eigentlich das gleiche sein, und funktioniert bei mir:
Delphi-Quellcode:
//initialisieren
var
  PresentParams: TD3DPresentParameters;
  dm: TD3DDisplayMode;
begin
  D3D := Direct3DCreate8(D3D_SDK_VERSION);
  ZeroMemory(@PresentParams, SizeOf(PresentParams));

  D3D.GetAdapterDisplayMode(0, dm);
  with PresentParams do
  begin
    BackBufferFormat := dm.Format;
    SwapEffect := D3DSWAPEFFECT_DISCARD;
    Windowed := true;
  end;

  D3D.CreateDevice(0, D3DDEVTYPE_HAL, {panel1.}Handle, D3DCREATE_SOFTWARE_VERTEXPROCESSING, PresentParams, Device);

//rendern:
Device.Clear(0, nil, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0, 0);
Device.Present(nil, nil, 0, nil);
Im Fall: Lass dir mal ausgeben, was [msdn:1f1459d3a1="Device.Present"]Present[/msdn:1f1459d3a1] beim Aufruf zurueckgibt. Wenn gar nichts rausgeschrieben wird, dann ist IMO dort der erste Ansatz zur Fehlersuche.

greetz
Mike

SirThornberry 9. Sep 2006 16:29

Re: DirectDraw ohne Vollbild/Bild direct auf Graka ausgeben
 
danke es funzt


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz