AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Alphakanal in DelphiX
Thema durchsuchen
Ansicht
Themen-Optionen

Alphakanal in DelphiX

Ein Thema von Florian H · begonnen am 18. Mai 2003 · letzter Beitrag vom 7. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

Alphakanal in DelphiX

  Alt 18. Mai 2003, 19:34
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
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#2

Re: Alphakanal in DelphiX

  Alt 5. Dez 2004, 23:01
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?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Alphakanal in DelphiX

  Alt 6. Dez 2004, 00:53
Da hatte ich vor einiger Zeit auch meine Last mit. Es scheint wirklich nicht zu gehen (mit DirectDraw, D3D hingegen ist ja was anderes...).

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#4

Re: Alphakanal in DelphiX

  Alt 6. Dez 2004, 13:42
Zitat von dizzy:
Ja Scheisse... (sorry, aber is so)

Zitat von 2D Alpha Blending by Gary Simmons:
I have lost count of the number of times I have seen in programming news groups, cry's for help from people who cant get DirectDraw to do Alpha Blending. These people think THEY are doing something wrong or missing something, but they are not. The simple fact is this :

DirectDraw does not support AlphaBlending

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]
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#5

Re: Alphakanal in DelphiX

  Alt 6. Dez 2004, 14:05
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.
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Alphakanal in DelphiX

  Alt 6. Dez 2004, 14:59
Zitat von Flogo:
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?
IMHO kann DD nur s/w-Masken, und keine Graustufen-Alphakanäle verarbeiten. Dass heisst: Volltransparente Bildteile, oder nichttransparente - keine Zwischenstufen die du für Antialiasing ja unbedingt brauchst.

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
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#7

Re: Alphakanal in DelphiX

  Alt 6. Dez 2004, 20:22
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?
Außerdem hab ich keine Ahnung was RHW-Vertizes sind.
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#8

Re: Alphakanal in DelphiX

  Alt 7. Dez 2004, 15:11
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:
(100,100,1)    (228,100,1)
         _______
        |      /|
        |    /  |
        |  /    |
        |/______|
(100,228,1)    (228,228,1)
Die dritte Komponente ist deshalb nötig, weil es ja insgeheim trotzdem 3D-Vektoren sind, auch wenn es 2-dimensional gezeichnet wird.

Nun legt man noch die Texturkoordinaten für die Fläche fest:
Code:
(0,0)    (1,0)
    _______
   |      /|
   |    /  |
   |  /    |
   |/______|
(0,1)    (1,1)
Dann lädt man eine Textur, aktiviert sie und rendert das ganze. Schon hat man ein 2D-Bild.

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.
  Mit Zitat antworten Zitat
Benutzerbild von Flogo
Flogo

Registriert seit: 24. Mär 2003
Ort: Freiburg im Breisgau
317 Beiträge
 
Delphi 7 Professional
 
#9

Re: Alphakanal in DelphiX

  Alt 7. Dez 2004, 19:56
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?
If one coincidence can occur, then another coincidence can occur. And if one coincidence happens to occur just after another coincidence, then that is just a coincidence.
DNA

www.Anyxist.de
  Mit Zitat antworten Zitat
Oxmyx

Registriert seit: 21. Sep 2004
499 Beiträge
 
#10

Re: Alphakanal in DelphiX

  Alt 7. Dez 2004, 20:05
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.
  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 14:34 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