Transperenz

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

pirahni

Betreff: Transperenz

BeitragMi, Okt 08, 2008 18:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, kennt jemand eine Funktion mit der man ein Bild transparent (also sowas wie 50% durchsichtigkeit oder so) anzeigen kann? Freu mich auf Hilfe.

Curtis

BeitragMi, Okt 08, 2008 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn ich die Forensuche benutze und dort "Transparenz" eingebe, stehen da ganz viele ähnliche Beiträge.
Warum alleine proggen? Komm in unser Team!
Curtis @ sysprofile.de

SYSThern

BeitragMi, Okt 08, 2008 18:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Curtis hat Recht!!!!

Pirahni!! Forensuche benutzen...


Draw3D https://www.blitzforum.de/foru...hp?t=21659


mfG SYSThern
[/url]
Tools and Programms
--------------------
www.systhern.de

Eingeproggt

BeitragMi, Okt 08, 2008 20:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wenn man nur 2D hat, muss man sich so eine Funktion selber schreiben. Das wird allerdings nicht echtzeittauglich werden.

Siehe dazu ReadPixel, WritePixel und alle dazugehörigen Befehle.

Kurze Erklärung:

Du hast einen Hintergrund und einen Vordergrund, beide liest du pixelweise aus und rechnest dann etwa so:
neue_farbe=(hintergrundfarbe+vordergrundfarbe*transparenz)/2
Und diese Farbe schreibst du wiederum in das Hintergrundbild oder den Backbuffer.
Achja, transparenz von 0.0 bis 1.0 angeben)

Viel Spass beim Tüfteln.

Es gibt übrigens auch eine Möglichkeit, 50% Transparenz echtzeittauglich darzustellen in BB2D, aber das sieht nicht sehr toll aus. Dazu ersetzt man einfach jedes 2. Pixel des "transparenten" Bildes durch die Maskfarbe und dann hat man ein Pixel-Gitter, welches bei nicht allzu genauer Betrachtung 50% transparent ist.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

pirahni

BeitragSo, Okt 19, 2008 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
funzt nett richtig, denn bei sehr dunkler transperenz wird es vor weißem Hintergrund schwarz angezeigt. Hier die Formel, berichtigt mich bei Fehlern in der Formel, die den Fehler verursachen hätten können.
Code: [AUSKLAPPEN]
r#=Floor#(((rgb And $FF0000) Shr 16)+part\R*part\Verglimmung#)/2

Das ganze ist eine Art feuerwerks- und partikelsystem.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragSo, Okt 19, 2008 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Du weißt aber schon, dass ein Partikelsystem relativ viel Systemrecourcen benötigt und eine pixelweise Einzelberechnung der transparenz absolut nicht Echtzeittauglich sein kann?

Eingeproggt hat bereits Lösungsansätze gezeigt. Wenn man Bilder ''mal eben'' transparent anzeigen will, dann kann man es mit ReadPixelFast und WritePixelFast berechnen. Für Echtzeittaugliche Sachen und ohne Blitz3D dabei zu benutzen, sollte man jedes zweite Pixel im Karomuster transparent machen. Die transparente Farbe wird dann per MaskImage maskiert. Soweit sind allerdings dann nur 50% Transparenz sinnvoll. Außerdem sieht es bei schlechteren Flachbildschirmen grausam aus, da diese so kontrastreiche Pixelmuster nicht vernünftig anzeigen können. Falls du Blitz3D hast, solltest du das ganze dann mit Sprites, meiner Draw3D oder einer anderen Grafikengine wie FastImage machen.

Zu deiner Frage:

''r#'' sollte als Ergebnis wieder ''Shl 16'' bekommen. Wobei ''r'' ja nicht Float sein sollte, da WritePixelFast ja nur ganze Zahlen verarbeiten kann. Eine Float bedeutet mehr oder weniger, dass alle vier Bytes meistens bereits Bitwerte beinhalten.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

pirahni

BeitragSo, Okt 19, 2008 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe es jetzt raus, mit einer anderen Formel, die ich hier für spätere leser veröfentlichen möcht^^ (Klappt auch mit niedriger tranzperenz vor weißem Hintergrund.)
Code: [AUSKLAPPEN]
farbe=farbehintergrund+(farbevordergrund-farbehintergrund)*transperenz
Auch hier muss die tranzperenz zwischen 0-garnicht sichtbar und 1-komplett sichtbar liegen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group