1 registered members (AndrewAMD),
1,248
guests, and 6
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Übereinanderlegen halbtransparenter Bitmaps
#453539
07/31/15 15:40
07/31/15 15:40
|
Joined: Mar 2014
Posts: 33 Germany: Sachsen
Nicros
OP
Newbie
|
OP
Newbie
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:
// 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
|
|
|
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
Expert
|
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: Nicros]
#453544
07/31/15 16:16
07/31/15 16:16
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
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
Expert
|
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
Nicros
OP
Newbie
|
OP
Newbie
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 Edit: Oh, dann würde das wegen dem Alphablending auch nicht klappen . 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
Expert
|
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
|
|
|
|