Hallo,
vielleicht kennt jemand diesen Effekt noch:
2 Kreise ("Funkwellen") lila/gelb bewegen sich hin und her, die Überlappungen beider Kreise verursachen aber rote Stellen.
Ist sowas mit PB überhaupt realisierbar? Mit dem Amiga ging es anscheinend problemlos mit einem Trick...
Ich kenn sowas ähnliches nur aus meinem Zeichenprogramm... Mischmodus "Differenz" oder sowas...
Danke,
Delle
Transparente übereinanderliegende Sprites
Transparente übereinanderliegende Sprites
PB 6.02 LTS + Win 11
- NicTheQuick
- Ein Admin
- Beiträge: 8679
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
- Kontaktdaten:
Re: Transparente übereinanderliegende Sprites
Wahrscheinlich brauchst du nur den richtigen 'SpriteBlendingMode()'.
Re: Transparente übereinanderliegende Sprites
Die Kreise sind nicht Lila und Gelb, sondern Rot und Lila, und die Mischung wird gelb.
Genau so bekomm ich das gerade nicht hin, aber mit einem passenden BlendingMode kann man Farben addieren, also Rot+Grün = Gelb:
Genau so bekomm ich das gerade nicht hin, aber mit einem passenden BlendingMode kann man Farben addieren, also Rot+Grün = Gelb:
Code: Alles auswählen
InitSprite()
Enumeration
#Window
#Sprite_Red
#Sprite_Blue
EndEnumeration
OpenWindow(#Window, 0, 0, 800, 600, "ScreenTitle", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Window), 0, 0, WindowWidth(#Window), WindowHeight(#Window), 0, 0, 0)
CreateSprite(#Sprite_Red, 1024, 1024)
CreateSprite(#Sprite_Blue, 1024, 1024)
Define N
If StartDrawing(SpriteOutput(#Sprite_Red))
For N = 20 To 0 Step -1
Circle(OutputWidth()/2, OutputHeight()/2, OutputWidth()*N/40, (N%2)*$0000FF)
Next
StopDrawing()
EndIf
If StartDrawing(SpriteOutput(#Sprite_Blue))
For N = 20 To 0 Step -1
Circle(OutputWidth()/2, OutputHeight()/2, OutputWidth()*N/40, (N%2)*$00FF00)
Next
StopDrawing()
EndIf
Repeat
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
End
Case #Null
Break
EndSelect
ForEver
ClearScreen(0)
SpriteBlendingMode(#PB_Sprite_BlendSourceAlpha, #PB_Sprite_BlendOne)
DisplayTransparentSprite(#Sprite_Red, 300+Sin(ElapsedMilliseconds()/1000)*200-512, 300-512)
DisplayTransparentSprite(#Sprite_Blue, 500-512, 300-512)
FlipBuffers()
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Transparente übereinanderliegende Sprites
Muss ja nicht 1:1 sein, ging mehr ums Prinzip! So ähnlich hab ich's jetzt mittels des Blendingmodus-Tipp auch hinbekommenSTARGÅTE hat geschrieben:Genau so bekomm ich das gerade nicht hin, aber mit einem passenden BlendingMode kann man Farben addieren, also Rot+Grün = Gelb:
Hattest Du nichtmal auch eine UserLib mit solchen Effekten veröffentlicht? Gibt's die Sources irgendwo?
PB 6.02 LTS + Win 11