![]() |
DirektX als Alternative zu BitBlt
Habe jetzt nochmal alles getestet und denke die beste
alternative wäre nach DirectX umzusteigen. Also anstelle von BitBlt denn mit der PaintBox scheint das bei der übergabe des HDC in eine DLL nicht wirklich zu funktionieren. Muss aber gestehen das ich unter Delphi damit noch nicht gearbeitet habe. Welche Units muss ich einbinden um ein ganz einfaches BitBlt in DirectX zu realisieren ? Und am wichtigsten wie geht das ? gruss Emil |
Re: DirektX als Alternative zu BitBlt
Öhm, BitBlt? Mit DirectX? Ich glaube, du hast eine grundlegend falsche Vorstellung von dem, was
![]() |
Re: DirektX als Alternative zu BitBlt
|
Re: DirektX als Alternative zu BitBlt
Zitat:
|
Re: DirektX als Alternative zu BitBlt
Zitat:
|
Re: DirektX als Alternative zu BitBlt
Hatte nicht vor um eine Funktion zu ersetzen eine komplette Komponente zu installieren.
Keine Ahnung ob man DirectX als alternative für BitBlt verwenden kann. Was BitBlt macht weiss ich (so etwa 20 Jahre) ;) darum gehts nicht.. Mein Problem ist das ein Fenster ala Panel wenn drauf gezeichnet wird dieses sich selbst aktualisiert bei Image oder PaintBox muss das DC immer neu gesendet werden damit das zeichnen nicht unterbrochen wird. Das will ich umgehen .. Ob das was bringt mit DirectX ?? Keine ahnung. gruss Emil |
Re: DirektX als Alternative zu BitBlt
Leite dir eine eigene Komponenten von TWinControl ab. Dort kannst du das Fensterhandle nutzen um dein DC zu bekommen (kennst du ja) und diesen musste dann zu deinem Plugin o.ä. senden für sein BitBlt. Vorteil einer eigenen Komponente: du kannst CreateWnd; überschreiben und bekommst somit mit, wenn das Control (somit das Fenster) neu erzeugt wird während der Laufzeit. Dies sollte nämlich wohl der eigentliche Grund sein, warum sich dein HDC ändert. Somit musst du das HDC nur dann neu senden, wenn es sich wirklich geändert hat und du bekommst es direkt mit. Auch halte ich nichts davon ein VCL Element zu missbrauchen (Ein Panel oder ein Image ist definitiv keine Zeichenfläche!!)
|
Re: DirektX als Alternative zu BitBlt
Zitat:
Wäre in Delphi eine möglichkeit Das Problem ist nur ich habe mit vielen sprachen zu tun und muss quasi unabhängig jetzt von Delphi (eigene anwendung) der DLL das HDC übergeben. Wie gesagt über GetDC(Panel. bla bla) funktioniert das auch aber nicht von der PaintBox oder ähnlichen Controls aus anderen Sprachen Früher habe ich eine Renderfunktion übergeben..
Delphi-Quellcode:
damit war gewährt das immer ein gültiges DC übergeben wurde
function BASS_SONIQUEVIS_Render2(handle: HVIS;
Data, fft: Pointer; canvas: DWORD; flags, pos: DWORD): boolean; stdcall; Das habe ich geändert da ich festgestellt habe das es einigen Leuten extrem schwer viel die richtigen FFT Daten zu übergeben. Das geschieht jetzt innerhalb BassVis Das problem ist nun das ich die PaintBox refreshen muss um BitBlt immer ein aktuelles HDC zu übergeben. Innerhalb der DLL kenn ich aber das Objekt nicht und schon gar nicht von welcher Sprache aus auf das DC geschrieben werden soll. Finde nicht den weg um das HDC zu übergeben. Das Rendern wird nur einmal initialisiert und dann innerhalb BassVis in einen Thread verwaltet. Hat auch den vorteil das man innerhalb der Anwendung nichts mehr damit zu tun hat. Timer usw.. Hmmm .. muss mal schaun. Schwierig zu lösen. gruss Emil |
Re: DirektX als Alternative zu BitBlt
Ich habe niemals gemeint die Komponente zu übergeben sondern immer nur das HDC (oder das HWND). Hintergedanke für die Komponente war einzig allein die direkte Notification über das Recreate des HWND, was ich als dein hauptsächliches Problem für ein ungültiges HDC vermutet hatte.
Also wenn du nun eine Benachrichtigung von deiner Komponente bekommst, dann geb das neue HDC weiter - wie du das in dein Renderer bekommst, ist doch relativ frei. Über einem memory mapped stream, Windows Botschaft (direkt oder Broadcast), Socket, etc - du hast viele Möglichkeiten. |
Re: DirektX als Alternative zu BitBlt
Zitat:
gruss Emil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz