Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.09.2012, 17:06

Ausfaden ohne Reste

Das Programm das ich hier vorgestellt habe: www.spieleprogrammierer.de/12-projekte-w…5-crazy-painter bietet ja die Funktion, das man mit "f" einen Fade-out Effekt ermöglicht. Dieser faded zwar, aber es bleiben Reste übrig. In dem Thread wo ich das Programm vorgestellt hab, kam der Vorschlag subtraktives Blending zu verwenden. Ich wollte das lieber hier in Ruhe diskutieren. Also momentan mache ich das ganz so, das ich die gesamte Szene auf eine RenderTexture zeiche, dann ein gleichgroßes Rechteck drüber lege welches leicht durchsichtig ist. Die Textur wird nicht gelöscht, sondern die neuen Objekte jede Szene einfach drüber gezeichnet.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

22.09.2012, 17:13

Subtraktives Blending würde die Farben im Bild verändern anstatt sie nur zu verdunkeln ...
Du könntest die Reste detektieren und manuell entfernen (Threshold).

3

22.09.2012, 17:19

Da SFML aber kein subtraktives Blending unterstützt, müsste ich es selber erweitern.
Die Reste detektieren und entfernen müsste ich mit einem Shader machen richtig? Woran genau liegt es den das die Reste bleiben (float Rundungsungenauigkeiten?!)?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

22.09.2012, 17:23

Im Frame-Buffer gibt es ja normalerweise nur 8 Bits pro Pixel und Farbkomponente, d.h. Zahlen von 0 bis 255.
Wenn du z.B. 10% abdunkeln willst, entspricht das einer Multiplikation mit 0.9. Wenn im Frame-Buffer eine 1 steht, bleibt sie auch danach noch eine 1, weil 1*0.9 wieder zu 1 gerundet wird.

Ja, mit einem Shader könntest du in so einem Fall den Pixel einfach direkt auf 0 setzen.

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

22.09.2012, 17:44

@David Scherfgen:
Du hast meine Idee geklaut: ^^

Zitat von »Spiele Programmierer«

Die Lösung zu den Linienresten wäre subtraktives Blending.

(Hab ich bereits in seinen Projektthread geschrieben)

@Foaly
Da du in SFML aber mit OpenGL arbeiten kannst, sollte es kein Problem sein.
Die Schlüsselfunktion nennt sich "glBlendEquation".

6

22.09.2012, 18:14

Ah ok. Versteh ich es richtig, das ich dafür GLEW installieren müsste?

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

7

22.09.2012, 18:18

Ich glaube schon. Keine Ahnung wie SFML das händelt und vielleicht selbst eine Schnittstelle besitzt.
Aber es gibt auch Alternativen aber GLEW scheint mir ganz sinnvoll wenn man sich nicht auf OpenGL 3 fokusieren will.

8

22.09.2012, 18:42

GL3W darf man auch nehmen. :vain:

MfG
Check

Werbeanzeige