ZFX
ZFX Neu
Home
Community
Neueste Posts
Chat
FAQ
IOTW
Tutorials
Bücher
zfxCON
ZFXCE
Mathlib
ASSIMP
NES
Wir über uns
Impressum
Regeln
Suchen
Mitgliederliste
Membername:
Passwort:
Besucher:
4381595
Jetzt (Chat):
31 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
OpenGL API + SDL
[Neue Erkenntnisse] FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreiben
Normal
AutorThema
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
[Neue Erkenntnisse] FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreibenNach oben.
Hi,

die Überschrift sagt eigentlich schon alles. Ich habe einen FBO mit einem RenderBuffer der für DEPTH_STENCIL genutzt wird. Das funktioniert auch wunderbar, mittels glReadPixels kann ich auch korrekt den Bufferinhalt auslesen den ich mir Testweise als Bitmap speichere und anschaue.

Aber wenn ich die gespeicherten Werte zurückschreibe kommt im FBO nix an. Wenn ich direkt nach dem Schreiben die Werte erneut auslese Habe ich ein komplett weißes Bild, sprich der DepthBuffer hat überall 1.0 gesetzt.

Der Ablauf an sich sollte stimmen, denn wenn der BackBuffer benutzt wird passt alles und das Lesen und Schreiben funktioniert wie gewünscht.

Vor dem Aufruf an glDrawPixels wird glRasterPos2 aufgerufen und die glColorMask durchweg auf GL_FALSE gesetzt.

Hat jemand einen Rat was ich falsch machen könnte?

Danke,
Stefan

1 Mal gendert, zuletzt am 20.02.2009, 15:35:14 Uhr von Stefan Zerbst.
19.02.2009, 19:06:33 Uhr
ZFX - 3D Entertainment
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreibenNach oben.
Hm ... durch Rumspielen bin ich darauf gekommen, dass beim glDrawPixels in den RenderBuffer eines FBO die y Achse wohl invertiert sein muss?

Wenn ich dem glRasterPos anstelle der y Koordinate (ist in dem Fall immer 0) die Höhe angebe dann passt es beim FBO während es für den normalen Default DepthBuffer die 0 und nicht die Höhe sein muss.

Jetzt bin ich verwirrt und bitte umso mehr um Aufklärung. Danke

Ciao,
Stefan
19.02.2009, 19:54:15 Uhr
ZFX - 3D Entertainment
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreibenNach oben.
hm ... toll. Wie es scheint funktioniert das mit der Invertierung unter Windows. Unte rLinux scheint diese Invertierung nicht nötig zu sein, dafür habe ich dort ein anderes Problem: Der zurückgeschriebene Tiefenbuffer ist um ca. 30 Pixel auf der X und der Y Achse versetzt, unabhängig von der Fenstergröße.

Hat irgendjemand eine Idee was zu diesem Offset führen könnte?

Das passiert auf verschiedenen Grafikkarten und mit verschiedenen Treibern unter Linux. Von daher würde ich ein Treiberproblem erstmal ausschließen. Es sei denn das Zurückschreiben von Tiefenwerten in einen FBO Render-Buffer tut unter Linux eigentlich gar nicht ...

Ciao,
Stefan
20.02.2009, 15:34:58 Uhr
ZFX - 3D Entertainment
Ingrater Offline
ZFX'ler


Registriert seit:
18.04.2007

Baden-Württemberg
Re: [Neue Erkenntnisse] FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreibenNach oben.
glDrawPixels und glReadPixels sind seit ogl 3.0 deprecated. Es wäre besser wenn du versucht eine textur hochzuladen und den framebuffer mit einem shader zu verändern.
01.03.2009, 09:56:19 Uhr
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: [Neue Erkenntnisse] FBO RenderBuffer DEPTH_COMPONENT mittels glDrawPixels beschreibenNach oben.
Hi,

also wenn es danach geht was besser ist dann sollten wir DirectX 11 verwenden

Leider geht in in diesem Fall danach was unser eigener Renderer intern macht und dass wir z.B. den MS OpenGL Software Renderer auch komplett unterstützen müssen und der ist irgendwo bei Version 1.0000001 hängen geblieben.

Edit Das Problem ist im übrigen auch in einem anderen Thread gelöst wurden bzw. ich kam selber noch drauf: Unter Linux hat ihn gestört, dass ich den FBO erst gebunden habe nachdem ich glRastPos bzw. glWindowPos aufgerufen habe. Wenn ich den FBO erst binde und dann die Position setze funktioniert es problemlos. Ist eigentlich auch verständlich, merkwürdig war nur dass es unter Vista (zufällig?) funktioniert hat auch wenn man den FBO vorher gebunden hat. Merkwürdig zudem auch, dass das Ergebnis unter Linux ja fast richtig war und mich daher nicht auf die Fährte dieser Lösung geführt hat.

Ciao,
Stefan

1 Mal gendert, zuletzt am 01.03.2009, 19:39:53 Uhr von Stefan Zerbst.
01.03.2009, 19:37:11 Uhr
ZFX - 3D Entertainment
Normal


ZFX Community Software, Version 0.9.1
Copyright 2002-2003 by Steffen Engel