Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by EternallyCurious. 04/18/24 10:45
StartWeek not working as it should
by Zheka. 04/18/24 10:11
folder management functions
by VoroneTZ. 04/17/24 06:52
lookback setting performance issue
by 7th_zorro. 04/16/24 03:08
zorro 64bit command line support
by 7th_zorro. 04/15/24 09:36
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:48
Zorro FIX plugin - Experimental
by flink. 04/14/24 07:46
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 600 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
EternallyCurious, 11honza11, ccorrea, sakolin, rajesh7827
19046 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Übereinanderlegen halbtransparenter Bitmaps #453539
07/31/15 15:40
07/31/15 15:40
Joined: Mar 2014
Posts: 33
Germany: Sachsen
N
Nicros Offline OP
Newbie
Nicros  Offline OP
Newbie
N

Joined: Mar 2014
Posts: 33
Germany: Sachsen
Hallo,
ich möchte in meiner Anwendung verschiedenfarbige Buttons benutzen.
Da es aber nicht wenige sind, möchte ich aus Speicherplatz- und Aufwandsgründen nicht für jeden Button 3 Bilder erstellen (on,off,over).
Stattdessen habe ich mir gedacht 3 Rahmen mit jeweils halbtransparenten Schatten zu erstellen.
Die Buttonrahmen haben jeweils eine Größe von 256*64 Pixeln, sind im TGA-Format gespeichert und werden im Programm später an die Bildschirmgröße angepasst.
Nun erstelle ich beim Starten der Anwendung verschiedenfarbige, rechteckige Buttonhintergründe und möchte, dass diese jeweils in den Rahmen eingefügt werden.
Das Einfügen des Hintergrundes versuche ich mit 'bmap_blit'. Das Problem ist, dass 'bmap_blit' bei mir keine Transparenz beachtet. Wenn an der Stelle (x,y) z.B. ein
roter Pixel ist und jetzt ein anderer Pixel dort hin soll, welcher aber den Alphawert Null besitzt, wird der rote Pixel einfach mit dem Neuen überschrieben.
Ich möchte aber, dass die Pixel je nach Transparenz 'überlagert' werden, wenn ihr versteht, was ich damit meine.
Gibt es eine Funktion die das übernehmen kann oder muss ich hier selbst eine schreiben ?

Hier ist mal ein kurzer Quellcode zu meinem Problem:
Code:
// bmapEmpty = leerer Hintergrund der Größe 256*64 (Alpha = 0)
// bmapRect = rechteckiger, farbiger Hintergrund, welcher die Größe 224*33 (Alpha = 100) besitzt
              und mittig in bmapEmpty plaziert wird
// BnormalO = Buttonrahmen für das "CursorOver"-Bitmap (Alpha zwischen 0 und 100)

bmapEmpty = bmap_createblack(256,64,32);   bmap_fill(bmapEmpty,vector(0,0,0),0);
bmapRect  = bmap_createblack(224,33,32);   bmap_fill(bmapRect,vector(0,0,255),100);
bmap_blit(bmapEmpty,bmapRect,vector(18,15,0),NULL);
	
bmap_blit(bmapEmpty,bmapBnormalO,NULL,NULL);   // setze den Rahmen über den Hintergrund



Danke im Voraus laugh

Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Nicros] #453541
07/31/15 15:49
07/31/15 15:49
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
liegt leider an bmap blit ;(

hatte irgendwo mal nen kleinen workaround gemacht um bmap blit vom gpu rechnen zu lassen (verwendet dann draw_quad). kann sein dass das ganze transparenz unterstützt, aber bin mir nicht sicher.


POTATO-MAN saves the day! - Random
Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Kartoffel] #453543
07/31/15 16:04
07/31/15 16:04
Joined: Mar 2014
Posts: 33
Germany: Sachsen
N
Nicros Offline OP
Newbie
Nicros  Offline OP
Newbie
N

Joined: Mar 2014
Posts: 33
Germany: Sachsen
Danke für die schnelle Antwort. Ich werde es gleich mal mit den Funktionen 'bmap_rendertarget' und 'draw_quad' versuchen.
Aber für mich wirkt es so als unterstützt 'draw_quad' keine variable Transparenz innerhalb eines Bitmaps, sondern eine feste die
man als Parameter setzt ... oder wie muss ich das mit dem Alphawert als Parameter verstehen, wenn man ein Bitmap übergibt?

Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Nicros] #453544
07/31/15 16:16
07/31/15 16:16
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
der alphawert ist eher ein multiplikator. der wert 100 entspricht dem faktor 1.00

im moment hab ich nur das problem, dass der modus 1 bei bmap_rendertarget wies aussieht garnicht geht...

Edit: ...was soviel bedeutet wie: man kann nicht eine bitmap laden und eine andere darüber blitten sondern muss eine leere erstellen, dann den ersten inhalt reinkopieren und den overlay dannach. (was mMn zu umständlich ist)

Last edited by Kartoffel; 07/31/15 16:18.

POTATO-MAN saves the day! - Random
Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Kartoffel] #453545
07/31/15 16:43
07/31/15 16:43
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
gibt wie befürchtet noch ein problem: alpha blending

Das drüberlegen einer transparenten bmap versaut den alphakanal der fertigen bmap.



(das weiß wird links transparent, obwohl das fertige bild nicht transparent sein sollte)

Naja wär auch zu einfach gewesen.
bmap_blit() unterstützt kein alphablending, draw_quad() schon, aber macht das ganze falsch ;_;


POTATO-MAN saves the day! - Random
Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Kartoffel] #453547
07/31/15 17:02
07/31/15 17:02
Joined: Mar 2014
Posts: 33
Germany: Sachsen
N
Nicros Offline OP
Newbie
Nicros  Offline OP
Newbie
N

Joined: Mar 2014
Posts: 33
Germany: Sachsen
Ich hätte jetzt versucht das 'bmapEmpty' als Rendertarget zu setzten (mode 0) und dann das 'bmapRect' mit draw_quad hineinzuzeichen.
Dann wollte ich den Rahmen mit draw_quad in 'bmapEmtpy' zeichen. Hätte vielleicht klappen können, oder ?
Jetzt ist mir aber bei versuchten Starten aufgefallen, dass 'bmap_rendertarget' nur von der Commercial oder Pro Edition unterstützt wird.
Ich überlegen schon länger, ob sich es lohnt die Commercial zu kaufen. Das Einzige was mich bis jetzt davon abhält ist, dass kein Dateipacker enthalten ist...
Naja, ich werde es jetzt erstmal mit der 30-Tage Testversion versuchen laugh

Edit: Oh, dann würde das wegen dem Alphablending auch nicht klappen cry . Ich versuchs trotzdem mal und schau dann wie es aussieht

Last edited by Nicros; 07/31/15 17:06.
Re: Übereinanderlegen halbtransparenter Bitmaps [Re: Nicros] #453549
07/31/15 17:33
07/31/15 17:33
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Kartoffel Offline
Expert
Kartoffel  Offline
Expert

Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
Hmm sorry, hab nicht dran gedacht, dass es da Limitierungen gibt :S
Wenn alles schief läuft könnte man immernoch die Pixel der bitmap einzeln editieren, aber das ganze wird wahrscheinlich sehr langsam sein.

aber mal so nebenbei: Für den heutigen Stand ist die Engine nicht mehr wirklich aktuell und den Preis meiner Meinung nach auch nicht unbedingt wert.
Will dich jetzt nicht abschrecken oder so, nur falls du an deinem Geld hängst wär's vielleicht ne bessere Idee die Investition erstmal sein zu lassen ;/


POTATO-MAN saves the day! - Random

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1