SetMaskColor ?
Übersicht

![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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. ![]() 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. ![]() Hier das Original: ![]() |
||
solitaire |
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei mir sieht das die ganze Zeit etwa aus wie in deinem Bild 2 oO | ||
![]() |
soli |
![]() Antworten mit Zitat ![]() |
---|---|---|
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. ![]() |
||
solitaire |
![]() |
Fetze |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group