Alphamode

Previous topic - Next topic

Derb


Malzeit  O_O

Ich habe ein Problem mit Alphamode. Gebe ich positive Werte an, wird mein Sprite Hell was OK ist. Ich will es aber abdunkeln also negativer Wert passiert nichts.


Danke

Schranz0r

Hast du ein kurzes Beispiel, was den Fehler zeigt?
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Derb

Ein kleines Beispiel habe ich nicht weil der Code mittlerweile sehr umfangreich ist...

Das wäre die stelle

QuoteGRABSPRITE 9001,xwin+10,ywin+10,xwinl,ywinl
   ALPHAMODE -0.2
   DRAWSPRITE 9001,xwin+10,ywin+10
   ALPHAMODE 0

Wenn Alphamode nur die transparenz betrifft warum hat es dann positive und negative Werte in der Syntax?

In meinem Bsp. oben habe ich einen hellen Effekt mit 0.2 und keinen Effekt mit -0.2

Schranz0r

mach mal ALPHAMODE -.8
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Derb

nichts zu sehen... wie gesagt bei 0.8 ist es aufgehellt, mit negativem Vorzeichen NICHTS... :rant:

monono

Wie Ocean schon geschrieben hat: Alphamode ist nicht wirklich zum abdunkeln geeignet. Es gibt Minus und Plus, weil es in opengl etliche Blendmodes und Einstellungen gibt. Auch wenn in der Hilfe steht, dass es für Schatten geeignet ist, ist damit gemeint, dass es beim blenden den Hintergrund eher verdunkelt, statt z.B. die Farbwerte zu addieren. Sinn macht das ganze erst wenn du Grafiken übereinander legst. Wenn du  ein einzelnes Sprite abdunkeln willst, male es mit POLYVECTOR und gebe dunkle RGB-Werte an jede Ecke.

michael

mach mal ein showscreen dazwischen und es wird gehen...,hier ein auszug aus meinem Code wo ich das verwenden...


  FOR i = -1 TO 0 STEP 0.1
    ALPHAMODE i
    xPrint("LEVEL", -1)
    xPrint(MyLevel%,0)
    SHOWSCREEN
    sWait(100)
  NEXT

Derb

Ok das Alphamode nun die Transparenz setzt habe ich begriffen. Vieleicht habe ich auch nur den falschen Ansatz und ihr könnt mir weiterhelfen.

Ich habe folgendes vor:

Ein Sprite fliegt über eine Bitmap. Um den Effekt des fliegenden Objektes realistischer zu gestalten, soll unterhalb versetzt der Schatten des fliegenden Objekts dargestellt werden. Natürlich ist der Schatten nicht schwarz sondern nur abgedunkelt.

Eigentlich wollte ich mir den Untergrund mit grabsprite in den Puffer kopieren, mit alphamode bearbeiten und dann wieder setzen.

Kann mir jemand mal grob einen Abriss geben wie ich es sonst realisieren soll?


Ich bedanke mich schon mal...

monono

QuoteNatürlich ist der Schatten nicht schwarz sondern nur abgedunkelt.
Ist der Schatten das abgedunkelte Sprite oder dunkelt der Schatten den Hintergrund. Ich nehme an du meinst das Zweite. :)

Wenn du dich nicht POLYVECTOR auseinandersetzen willst, kannst du doch zwei Sprites laden (das selbe Bild einmal normal, einmal komplett schwarz). Dann zeichnest du den Hintergrund, dann das schwarze Sprite mit Transparenz, dann das normale Sprite. Die beiden Sprites dürfen natürlich nicht die selbe Position haben, sonst sieht man das Untere nicht. Also etwas versetzt, je nach höhe.
Wenn du keine zwei Sprites laden willst, kannst du auch beide Bilder in einer Imagedatei nebeneinander haben, und das ganze mit LOADANIM laden und bei DRAWANIM zwischen der Schattenversion und der Originalversion hin und her schalten.

Ich würde dir trotzdem POLYVECTOR ans Herz legen. Es gibt einige Funktionen hier im Forum mit denen man DRAWSPRITE ersetzen kann. Der Vorteil ist, dass du das Sprite an jeder Ecke beliebig einfärben kannst und auch die Alphawerte pro Ecke verändern kannst.

Lass auf jeden Fall die Idee mit dem Puffer sein. Es wird im besten Falle langamer und komplizierter.

Wenn das so nicht reicht und du etwas Code brauchst, sag bescheid.

Derb

Ich habe die Freie Version, also nix Polyvector ;-(

Der Tipp mit dem Schwarzen Sprite und dann Alphamode hört sich aber sehr gut an.

Werde es mal ausprobieren ;-)

Derb

Funktioniert so wie es wollte... danke für den Tipp. Hab wieder einmal zu kompliziert gedacht.

1000 Dank

Kitty Hello

polyvector geht auch bei der freien Version. (Ist ja 2D).

Schranz0r

Hab ich mir eben auch grade gedacht :D
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Derb

#13
Das hab ich nicht gewusst, da ich Poly mit 3 D assoziiert habe.  :nw:

Wie schon mal erwähnt, habe ich vor 15 Jahren auf dem Amiga programmiert. Das ist lange her und gewisse Dinge will man immer noch machen wie seinerzeit.

Von Allen Basic Dialekten die es aktuell so gibt, ist GL mir das liebste geworden, obwohl es bei weitem nicht perfekt ist.

Danke aber nochmal für die tolle Hilfe.

Schranz0r

Quote from: Derb on 2012-Jan-09
Von Allen Basic Dialekten die es aktuell so gibt, ist GL mir das liebste geworden, obwohl es bei weitem nicht perfekt ist.

Für 2D in jeder hinsicht PERFEKT! :)
Was will man bitte noch mehr?!
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard