![]() |
Alphakanal in DelphiX
Hi!
Gibt es eine möglichkeit, für Bilder/Animationen einen Alphakanal (Transparenz) festzulegen? Also ich meine nicht Surface.Draw...Alpha(..); sondern eben über ein Alphabild das für jeden Pixel einzeln regelt, wie transparenz er ist! Sinn das ganzen: weiche Kanten bei den Sprites = AntiAliasing Viele Grüße Flo |
Re: Alphakanal in DelphiX
Hi Flo ;-)
hab deinen Thread grad in der Suche gefunden. Hast du mittlerweile schon eine Lösung gefunden? Lassen sich evtl. auch andere Formate (png?) in DelphiX laden? |
Re: Alphakanal in DelphiX
Da hatte ich vor einiger Zeit auch
![]() Gruss, Fabian |
Re: Alphakanal in DelphiX
Zitat:
Was genau bedeutet das? In DelphiX gibt es doch gleich mehrere Funktionen für Alpha Blending (DrawAlpha, Eins von den Samples, ...) Machen diese Teile kein "echtes" Alpha Blending? oder funktionieren sie nicht über DirectDraw? Sorry ich hab leider nicht soviel Ahnung davon. Was ist mit der anderen Alternative (png, tiff, psd)? Ist das überhaupt eine Alternative oder sollte da intern das gleiche passieren? [Edit] Tags korrigiert [/Edit] |
Re: Alphakanal in DelphiX
Es gibt eigentlich keinen Grund, DirectDraw zu benutzen. Das selbe kann man viel schneller (hardwarebeschleunigt), schöner und einfacher auch mit Direct3D machen. Wenn man RHW-Vertizes benutzt, kann man sogar wie in DirectDraw exakt die Bildschirmkoordinaten festlegen, an denen ein Bild erscheinen soll, da gibt es nichts mehr mit kompliziertem 3D.
|
Re: Alphakanal in DelphiX
Zitat:
Was Oxmyx schreibt klingt interessant; in diese Richtung würde ich dann auch weiter suchen. Ich habe bisher überall nur den Tipp gefunden: "Mach's mit Direct3D/OpenGL." Gruss, Fabian |
Re: Alphakanal in DelphiX
Ich habe bis jetzt DelphiX benutzt. Kapselt das die DirectDraw Methoden?
Wenn ich jetzt nur aus Qualitätsgründen (Graustufen statt s/w Maske) auf D3D umsteigen würde, wüsste ich nicht mehr, wie ich die Kollisionen, Animationen, usw. regeln sollte. Müsste man das dann alles "von Hand" nachschreiben? :pale: Außerdem hab ich keine Ahnung was RHW-Vertizes sind. :oops: |
Re: Alphakanal in DelphiX
RHW-Vertizes sind bereits transformiert und beleuchtet, d.h. sie werden nicht mehr durch die Transformationspipeline gewurstelt, sondern direkt an den Rasterizer übergeben. Weil sie also nicht mehr transformiert und beleuchtet werden, zeichnet der Rasterizer sie exakt so auf den Bildschirm, wie er sie empfängt. Wenn man also als Koordinaten die Bildschirmkoordinaten angibt, werden die Vertizes auch exakt an dieser Stelle auf dem Bildschirm erscheinen.
Um ein Bild (128x128 Pixel) an der Bildschirmposition 100, 100 darzustellen, zeichnet man einfach zwei Dreiecke, die folgende 3D-Koordinaten haben:
Code:
Die dritte Komponente ist deshalb nötig, weil es ja insgeheim trotzdem 3D-Vektoren sind, auch wenn es 2-dimensional gezeichnet wird.
(100,100,1) (228,100,1)
_______ | /| | / | | / | |/______| (100,228,1) (228,228,1) Nun legt man noch die Texturkoordinaten für die Fläche fest:
Code:
Dann lädt man eine Textur, aktiviert sie und rendert das ganze. Schon hat man ein 2D-Bild.
(0,0) (1,0)
_______ | /| | / | | / | |/______| (0,1) (1,1) Eine Animation kann man ganz einfach erstellen, indem man die Einzelbilder hintereinander in einer Textur speichert, und die Texturkoordinaten so anpasst, dass immer ein einzelnes Bild aus der Textur "herausgepickt" wird. Und die Kollisionen laufen ja wahrscheinlich sowieso mathematisch ab, da ist es unerheblich, wie die Grafik dargestellt wird. |
Re: Alphakanal in DelphiX
Erst mal danke für die ausführliche Antwort. Ich versteh zwar immer noch nicht alles (Transformationspipeline?) aber ich denke das Prinzip ist jetzt klar.
Mein Problem ist aber, dass ich im Moment alles in DelphiX geschrieben hab und nicht ganz weiß, wie ich diesen Ansatz da jetzt einbauen könnte. Sind diese RHW-Vertizes in irgendeiner Unit gekapselt? Wenn ja in welcher? Könnte ich das Zeichnen von den Vertizes in die onDraw() Methoden der ImageSprites die ich benutze reinschreiben? Würde die Kollision (von DelphiX) dann immer noch tun, oder müsste ich die selber schreiben? |
Re: Alphakanal in DelphiX
Ich denke mal "Nein" zu allem. ;)
Das hat überhaupt nichts mehr mit DirectDraw oder Sprites zu tun, und ich glaube auch nicht, dass DelphiX mit DirectX 7 bereits das Zeichnen mit transformierten und beleuchteten Vertizes kann. Ich würde aber so früh wie möglich auf DirectX 9 umsteigen, denn DirectX hat sich im Vergleich zur Version 7 grundlegend verändert und verbessert. |
Re: Alphakanal in DelphiX
Ok! Schade! Ich denke das ist mir im Moment noch alles zu hoch. Vielleicht kommt das Antialising dann in die Version 2.0 mit rein ;-)
Trotzdem vielen Dank, dass du dir die Zeit genommen hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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