Author Topic: [3D] X_SPRITE mit ALPHAMODE ist nicht korrekt.  (Read 2613 times)

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5111
  • O Rly?
    • View Profile
Wenn man mehrere dieser Sprites überlappt, merkt man, das ALPHAMODE nicht korrekt arbeitet.
In 2D ist alles i.o.


Hier ein Test: www.styleattax.de/alphamode.rar

Oben 3D unten 2D!

Und ja ich weiss, habe das Project falsch benannt :)
Ist mir wohl ein L weg gelaufen :P
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10817
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
[3D] X_SPRITE mit ALPHAMODE ist nicht korrekt.
« Reply #1 on: 2008-Apr-14 »
Kein Fehler!
Du musst bei 3D die Zeichenreihenfolge beachten!!

Code: (glbasic) [Select]
z=0
FOREACH t IN R[]
DEC z, 0.01
ALPHAMODE t.alpha
X_SPRITE 1,t.x,t.y, z ,1
Puh! :D

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5111
  • O Rly?
    • View Profile
[3D] X_SPRITE mit ALPHAMODE ist nicht korrekt.
« Reply #2 on: 2008-Apr-14 »
versteh ich jetzt net nichts desto trotz ist aber das Alpha anders als in 2D.
Der Rand der "Wolke" ist schwarz und Fadet auf Schwarz, ist in 2D aber nicht so!


EDIT:

Code: (glbasic) [Select]
z = 0
FOREACH t IN R[]

ALPHAMODE t.alpha
DEC z, 0.1
X_SPRITE 1,t.x,t.y,z,1
Gut, schaut aber bescheiden aus die Ränder...


EDIT2:

Code ist nicht schön, da ich einfach 2 test zusammen geworfen habe!
Comments == FALSE :)

Code: (glbasic) [Select]
SYSTEMPOINTER TRUE

LOADSPRITE "r1.png", 1

// 3D ------------------
TYPE Rauch
x;y;z
alpha
phi
speed
ENDTYPE

LOCAL R[] AS Rauch
// --------------------

// 2D ------------------

TYPE particle
X;Y
alpha
offsetX
speed
phi
ENDTYPE

GLOBAL p[] AS particle

//----------------------


WHILE TRUE

LOCAL mx,my,b1,b2
MOUSESTATE mx,my,b1,b2

// 3D ---------------------------------------------
X_MAKE3D 1,1000,45
X_CAMERA 0,0,-400, 0,0,0

IF timer < GETTIMERALL()
LOCAL t AS Rauch

t.phi = 60+RND(60)
t.alpha = -0.5 + -RND(2)/10
t.speed = 0.4 + RND(2)/10

DIMPUSH R[],t
timer = GETTIMERALL()//+50
ENDIF



X_DRAWAXES 0,0,0
z = 0
FOREACH t IN R[]

ALPHAMODE -t.alpha
DEC z, 0.1
X_SPRITE 1,t.x,t.y,z,1

INC t.x, COS(t.phi)*t.speed
INC t.y, SIN(t.phi)*t.speed
INC t.alpha,0.002

IF t.alpha >= 0
DELETE t
ENDIF

NEXT


// 2D ----------------------------------------------
X_MAKE2D
IF timer2 < GETTIMERALL()
LOCAL e AS particle

IF b1
e.X = mx
e.Y = my
ELSE
e.X = 300
e.Y = 400
ENDIF

e.alpha = .5
e.speed = .5+RND(3)/5
e.phi = -90+rand(-30,30)
DIMPUSH p[],e
timer2 = GETTIMERALL()//+50
ENDIF


FOREACH t IN p[]

INC t.offsetX,1
INC t.X,COS(t.phi)*t.speed
INC t.Y,SIN(t.phi)*t.speed

ALPHAMODE -t.alpha
DRAWSPRITE 1,t.X, t.Y
ALPHAMODE 0

DEC t.alpha,0.002


IF t.alpha < 0
DELETE t
ENDIF

NEXT

PRINT "Particle on the move: "+LEN(p[]),10,10



SHOWSCREEN
WEND
END

FUNCTION rand: minimum, maximum
  RETURN minimum + RND(-minimum + maximum)
ENDFUNCTION
Einfach die Rar runterladen(erster Post) und den Code ersetzt mit dem aus diesem Post!
I <3 DGArray's :D

PC:
AMD Ryzen 7 1700 @3.9GHz, 16GB HyperX Fury 3000MHz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10817
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
[3D] X_SPRITE mit ALPHAMODE ist nicht korrekt.
« Reply #3 on: 2008-Apr-15 »
Hmm... ist bisserl anders. Warscheinlich, weil die Größe eines Partikels nicht 100% mit dem 2D übereinstimmt?
Oder ist da was mit Rändern? Ich hab's nicht genau feststellen können.