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

02.05.2015, 17:43

FBO Textur lesen

Hallihallo ^^
Und zwar: ich hab in meinem Sidescroller Licht mithilfe von FBOs implementiert. Ich hab das FBO gebunden und lese im Shader von der Texture des aktiven FBOs einen Wert, berechne ein paar Dinge und gebe dann einen Farbe für das Fragment zurück, das dann wiederum natürlich in die selbe Textur geschrieben wird. Das Problem: bei mir funktionierts, bei meinem Kumpel nicht. Ich hab gelesen dass man nicht gleichzeitig von einer Textur samplen und in diese mithilfe eines FBOs schreiben darf. Hat jemand ne Idee wie das gelöst werden kann? :hmm:

2

02.05.2015, 18:20

ich muss ja gucken ob die helligkeit des fragments größer ist als das existierende, damit es überschrieben wird, sodass sich die lichter überschneiden können.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

02.05.2015, 20:22

Lesen und schreiben auf den gleichen FBO ist undefiniertes Verhalten. Da kann alles mögliche passieren. Geht so nicht. Da brauchst Du eine alternative Lösung, wie Bambi schon sagte.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

4

03.05.2015, 01:11

Es war lange Zeit undefiniertes Verhalten, allerdings nicht mehr zwingend mit einer weit verbreiteten Extension bzw. seit OpenGL 4.5.
NV_texture_barrier oder ARB_texture_barrier.
Anders als der erste Name vermuten lässt, wird die erste Extension nicht nur von Nvidia unterstützt. Zweitere ist die neue Core Extension der exakt selben Funktionalität und gehört auch zu OpenGL 4.5.

Falls diese Extensions nicht verfügbar sind, bleibt noch das von Bambi angesprochene Ping Pong Verfahren. Man hat also einfach zwei Texturen und rendert abwechselnd zwischen diesen hin und her. Dieser Ansatz geht natürlich auf offensichtliche Weise in den Speicherverbrauch.

5

03.05.2015, 01:33

ich muss ja gucken ob die helligkeit des fragments größer ist als das existierende, damit es überschrieben wird, sodass sich die lichter überschneiden können.


Das hört sich ein bisschen komisch an. Beschreib doch mal genauer, was du machst, vielleicht gibt es dafür ja einen besseren Weg. Ansonsten ist das mit einer zweiten Textur auch schnell gemacht, sind vermutlich letztendlich 5-10 Zeilen die du hinzufügen musst.
Lieber dumm fragen, als dumm bleiben!

6

03.05.2015, 02:13

Habs jetzt mit Blending gelöst :thumbup:

Werbeanzeige