![]() |
TDXDraw (DirectDraw DirectX 7) und Semi-Transparenz
Hallo #,
ich arbeite mit obiger Komponete (DXDraws.pas usw.) Ich möchste dabei Semitransparenz benutzen. Die Methode DrawAlpha funktioniert zwar, ist aber grottenlahm. Das liegt daran, dass sie die Grafiken aus der GK zieht, lokal (per Prozessor) bearbeitet und wieder zurückschiebt. Es kommen also keine GK-Befehle um Einsatz. Ich habe hier mehrere Programme, die die Komponente benutzen, die will und kann ich nicht alle auf neueres DirectX umstellen. Gibt es eine andere Möglichkeit für Semi-Transparenz ? Hat jemand einen Tip / ein paar Links für mich. Danke |
AW: TDXDraw (DirectDraw DirectX 7) und Semi-Transparenz
Soweit ich mich noch erinnern kann und du richtig geschrieben hast, verwenden die Klassen von Horiyuki wüste ASM Routinen, die die Transparenz berechnen. Die Klassen sind schon recht alt und nur bis Delphi 7 verfügbar. Auf der GPU wird hier nichts berechnet und ist auch so ohne weiteres nicht möglich. Es gibt glaub ich in den Komponenten die Möglichkeit auf Systemspeicher umzuschalten. Wenn das Bild auf der Grafikkarte liegt, dann muss die auch noch zuerst übertragen werden. Eventuell wird es ein wenig schneller hier den Systemspeicher zu verwenden? Man könnte die ASM Routinen auch noch an MMX oder SSE anpassen, wird aber auch keinen immensen Geschwindigkeitsvorteil bringen.
Da ein Projekt von mir auch darauf angewiesen war, habe ich damals die Struktur der Klassen nachgebaut, aber auf DirectX9 mit 3D Funktionen die eine 2D Oberfläche imitieren, umgeschrieben. Somit wurden alle Berechnungen auf die GPU ausgelagert. Vorteil war den eigentlich Code kaum ändern zu müssen. Das ist aber auch schon Jahre her und inzwischen haben die kaum noch was damit gemeinsam. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 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