SetMaskColor ?

Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

Fetze

BeitragMo, Okt 17, 2005 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht, dass ich wüsste... wenn ich ein 40 mal 40-Bild hab, wird daraus eine 64 mal 64-Textur, von der eben nur die oberen linken 40 mal 40 Pixel belegt sind.... oder?

Jan_

Ehemaliger Admin

BeitragMo, Okt 17, 2005 11:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hm, das ist gut möglich.

keine ahnung, ich bin bis jetzt davon ausgegangen, das es wie bei B3D gemacht wurde.
between angels and insects

soli

BeitragDi, Okt 18, 2005 3:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@Fetze

Mach mal bitte mit deiner Grafik
die einen Fehler hervorruft folgenden Test.

Zeichne sie, und unterbreche nach dem Flip das Programm.

Es würde mich interessieren, ob bei dir
der gleiche Effekt wie bei mir auftritt.

user posted image
Das sind aneinanderkettete verschiedene Screeshots.
Zuerst wird der Alphachannel noch berücksichtigt,
doch dann nach 4 Schleifendurchläuften wird das Bild
völlig unbrauchbar dargestellt.
Sad

Hier das Original:
user posted image
solitaire

Fetze

BeitragDi, Okt 18, 2005 11:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir sieht das die ganze Zeit etwa aus wie in deinem Bild 2 oO

soli

BeitragMi, Okt 19, 2005 5:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Verstehe ich nicht,
hast du
setblend (alphablend)?

Ich hab meinen Fehler übrigens gefunden,
kann aber nicht glauben, das dies solche,
und gerade diese Auswirkungen hat.

Code: [AUSKLAPPEN]

Graphics 400,300,0,60
Global kugel3 = LoadPixmap ("kugeln/bild1.png")


While Not KeyHit(2)
'   Cls

   SetBlend (alphablend)
   'SetAlpha (0.5)
   DrawPixmap kugel3,1,1
   Flip
   
   warte(2000)
   
Wend
End

Function warte(a)

   timer=MilliSecs()
   Print timer+"   "+MilliSecs()
   
   While MilliSecs() < timer+a
         If MouseHit(2) Then End
   Wend
   
End Function


Das Cls hatte ich vergessen.
Sad
solitaire

Fetze

BeitragMi, Okt 19, 2005 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Jup, hab Alphablend verwendet. Naja, wenn man das Cls vergisst, ist ja klar, dass das solche Auswirkungen hat: Das Bild wird immer und immer wieder über sich selber drüber gemalt, wodurch der Alphachannel langsam verschwindet.

bruZard

BeitragMi, Okt 19, 2005 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
@soli: Versuche es mal so:
Code: [AUSKLAPPEN]

SetGraphicsDriver GLMax2DDriver()

Graphics 400,300,0

SetBlend ALPHABLEND

Global kugel3:TImage = LoadImage("kugeln/bild1.png")


While Not KeyHit(KEY_ESCAPE)
  Cls

  SetAlpha (0.5)
  DrawImage kugel3, 1, 1
 
  Flip
   
  FlushMem()
Wend
End   
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Fetze

BeitragMi, Okt 19, 2005 12:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Interessant ist auch der Effekt, der hierdurch zustande kommt:

Code: [AUSKLAPPEN]

SetGraphicsDriver GLMax2DDriver()

Graphics 400,300,0

SetBlend ALPHABLEND

Global kugel3:TImage = LoadImage("bild1.png")


While Not KeyHit(KEY_ESCAPE)
 ' Cls
  SetAlpha (0.0125)
  SetColor 0,0,0
  DrawRect 0,0,400,300

  SetColor 255, 255, 255
  SetAlpha (1.0)
  DrawImage kugel3, x, y
  x:+ 1
  y:+ 1
 
  Flip
   
  FlushMem()
Wend
End   


Obwohl DrawRect jedes Frame alles etwas verdunkeln sollte, bleiben deutlich sichtbare, graue Rückstände der sich bewegenden Grafik. Hat jemand ne Ahnung, woran das liegen könnte und was man dagegen tun kann?
 

Dreamora

BeitragDo, Okt 20, 2005 22:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Bild der Situation oder verwendete Grafik?

Der Alphawert ist schon ein wenig sehr niedrig, wird da überhaupt noch etwas gezeichnet in BM?
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Fetze

BeitragFr, Okt 21, 2005 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Als BIld habe ich das von soli verwendet und jop, da wird noch gezeichnet. Aber es bleiben, je geringer der Alphawert ist, immer deutlichere Rückstände. Das funktioniert auch bei höheren Alphas nur ist es da nicht so deutlich sichtbar.

bruZard

BeitragFr, Okt 21, 2005 7:00
Antworten mit Zitat
Benutzer-Profile anzeigen
@Fetze:
Das liegt daran dass Du Cls auskommentiert hast. Dein Programm arbeitet im Blendmode ALPHABLEND und SetAlpha arbeitet mit Floats. Da es immer geringe Ungenauigkeiten mit Floats gibt wird Dein "SetAlpha 1.0" niemals exact 1.0 sein. Je länger Dein Programm läuft umso mehr addieren sich die Ungenauigkeiten auf dem Canvas und man sieht "Schlieren".

Es gibt absolut keinen Grund auf Cls zu verzichten, außer man will hinterher über Nebeneffekte weinen.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Fetze

BeitragFr, Okt 21, 2005 10:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weis, dass ich Cls draussen hab. Der Nebeneffekt wäre theoretisch eine Art Motionblur komplett ohne irgendwelchen Aufwand. Kann man dieses SetAlpha-Problem nicht irgendwie umgehen?

bruZard

BeitragFr, Okt 21, 2005 11:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, kann man umgehen: Cls
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group