AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DirektX als Alternative zu BitBlt
Thema durchsuchen
Ansicht
Themen-Optionen

DirektX als Alternative zu BitBlt

Ein Thema von EWeiss · begonnen am 27. Mai 2008 · letzter Beitrag vom 28. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

DirektX als Alternative zu BitBlt

  Alt 27. Mai 2008, 17:34
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: DirektX als Alternative zu BitBlt

  Alt 27. Mai 2008, 23:14
Öhm, BitBlt? Mit DirectX? Ich glaube, du hast eine grundlegend falsche Vorstellung von dem, was DirectX ist. (Es ist zunächstmal um auf die Frage einzugehen, kein gleichwertiger Ersatz für GDI-Funktionen.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DirektX als Alternative zu BitBlt

  Alt 27. Mai 2008, 23:19
hy,

vllt hilft dir delphix weiter!! (keine ahnung ob du es kennst)

delphix
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: DirektX als Alternative zu BitBlt

  Alt 27. Mai 2008, 23:26
Zitat von delphix:
Full installation of DelphiX (unrar only) has all features of DirectX 7
Yuck... das ist aber mal aktuell
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: DirektX als Alternative zu BitBlt

  Alt 27. Mai 2008, 23:50
Zitat von Medium:
Zitat von delphix:
Full installation of DelphiX (unrar only) has all features of DirectX 7
Yuck... das ist aber mal aktuell
ja das funzt aber auch auf diret x9 und 10...
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

Re: DirektX als Alternative zu BitBlt

  Alt 28. Mai 2008, 00:49
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: DirektX als Alternative zu BitBlt

  Alt 28. Mai 2008, 01:05
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!!)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: DirektX als Alternative zu BitBlt

  Alt 28. Mai 2008, 01:59
Zitat von Muetze1:
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!!)
Danke..
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:
function BASS_SONIQUEVIS_Render2(handle: HVIS;
                                 Data, fft: Pointer;
                                 canvas: DWORD;
                                 flags, pos: DWORD): boolean; stdcall;
damit war gewährt das immer ein gültiges DC übergeben wurde
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: DirektX als Alternative zu BitBlt

  Alt 28. Mai 2008, 02:15
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

Re: DirektX als Alternative zu BitBlt

  Alt 28. Mai 2008, 02:36
Zitat von Muetze1:
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.
Danke .. werd mal schaun wie ich das gebacken kriege

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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