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:
4442162
Jetzt (Chat):
17 (0)
Mitglieder:
5239
Themen:
24223
Nachrichten:
234554
Neuestes Mitglied:
-insane-

ZFX
Coding-Foren
OpenGL API + SDL
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???
Normal
AutorThema
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Hi,

ich spamme das Forum jetzt einfach mal zu weil dieser Thread hier zu keiner Antwort führte und vielleicht vom eigentlichen Problem ablenkt.

Ich versuche mittels glDrawPixels zuvor ausgelesene Daten aus einem DepthBuffer in selbigen zurück zu schreiben. Theoretisch klappt das ganz gut aber ich kämpfe mit einem Problem.

Man muss ja vor dem Schreiben die Schreibeposition mit glRasterPos oder glWindowPos setzen. In bestimmten Szenarien kommt es bei mir aber vor, dass ich anstelle von x und y als Schreibposition x und height angeben muss oder in einem anderen x und y+30.

Das schaut für mich so aus, als ob auf den Aufruf von glRasterPos bzw. glWindowPos noch irgendeine Transformation angewendet wird. Daher meine Frage ob irgendein GL State eine solche Transformation bewirken könnte?

Leider lässt sich das ganze nicht näher eingrenzen weil das in einer größeren Software stattfindet. In dem Fall wo ich mit dieser scheinbaren Transformation oder Invertierung zu kämpfen habe wird in der Software eine Komponente von Qt verwendet (QGraphicsView mit OpenGL Viewport) und die PaintEngine von Qt fummelt dabei an sehr vielen GL States herum. Von daher vermute ich zur Zeit sehr stark, dass irgendein State dieses Problem verursacht der nicht wieder korrekt auf den Default zurück gesetzt wird.

Danke für jeden Input, ich greife nach jedem Strohhalm

Ciao,
Stefan
20.02.2009, 21:19:28 Uhr
ZFX - 3D Entertainment
Das Ich Offline
ZFX'ler


Registriert seit:
11.07.2005

Schleswig-Holstein
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Du könntest mal glViewport() ausprobieren. Ausserdem würde ich versuchen alle Koordinaten bei glRasterPos() zu setzen, also glRasterPos(x,y,0.0,1.0)

Die Funktionen glPixelStore() und glPixelZoom() könntest du dir auch mal anschauen.

Ich hoffe ich konnte dir helfen.
21.02.2009, 00:12:46 Uhr
http://www.one-digit-ahead.com/
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Hi,

hm ... würde glViewport nicht einfach nur den schreibbaren Bereich begrenzen und würde zu einem Clipping der mittels glRasterPos gesetzten Position führen da diese bei uns immer (0, 0) ist? glPixelStore wird schon gesetzt, glPixelZoom würde glaube ich anders aussehen. Das Abbild im DepthBuffer ist wirklich nur um 30 Pixel auf der Y Achse versetzt und nicht gezoomed.

Ausprobiere werde ich in meiner Verzweiflung trotzdem alles am Monatg wenn ich wieder an dem Projekt bin, danke erstmal.

Für weitere Ideen bin ich weiterhin zu haben

Ciao,
Stefan
21.02.2009, 13:14:23 Uhr
ZFX - 3D Entertainment
Das Ich Offline
ZFX'ler


Registriert seit:
11.07.2005

Schleswig-Holstein
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Zitat:
würde glViewport nicht einfach nur den schreibbaren Bereich begrenzen und würde zu einem Clipping der mittels glRasterPos gesetzten Position führen da diese bei uns immer (0, 0) ist?


Wenn ich dich richtig verstehe ist das die Funktion von glScissor() (kannst du auch ausprobieren). glViewport setzt den Viewport neu an so das (0,0) ggf. verschoben ist.
22.02.2009, 14:31:59 Uhr
http://www.one-digit-ahead.com/
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Hi,

ich denke ich habe das Rätsel nun gelöst. In bestimmten Situationen wurde der FBO erst gebunden nachdem glWindowPos aufgerufen wurde. Offensichtlich hat OpenGL das nicht so gut vertragen, dass man zwischendurch den Buffer gewechselt hat. Der Startpunkt lag aber in diesen Fällen immer bei (0,0) also ist es schon etwas unverständlich, dass das fast richtig funktioniert hat. Ich hätte dann eher erwartet, dass es entweder ganz richtig funktioniert oder total in die Hose geht.

Lang lebe DirectX

Ciao,
Stefan
23.02.2009, 19:23:09 Uhr
ZFX - 3D Entertainment
dv Offline
ZFX'ler


Registriert seit:
15.09.2002

Österreich
89159988
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
An dieser Stelle ein paar Hinweise:

- benutze folgende Tools: gdebugger (http://www.gremedy.com/), glIntercept (http://glintercept.nutty.org/), und glslDevil (http://www.vis.uni-stuttgart.de/glsldevil/). Letzteres ist auch für das generelle Testen des Laufzeitverhaltens eines OpenGL-Clients ziemlich brauchbar.

- Wenn du mehr als ein QGLWidget hast, und OpenGL-Extensions verwenden willst, nimm GLEW mit der Multiple-Context-Funktion. Ansonsten kann nur *ein* QGLWidget mit Extensions arbeiten.
23.02.2009, 21:31:33 Uhr
0xdeadbeef
Stefan Zerbst Offline
Administrator


Registriert seit:
25.02.2002

Deutschland
Re: Transformationen für glRasterPos aka glWindowPos bzw. glDrawPixels ???Nach oben.
Hi,

wieso kann nur "ein" QGLWidget mit Extensions arbeiten? Abgesehen davon, dass wir Extensions nur moderat einsetzen funktioniert das mit mehreren Kontexten bisher problemlos. Allerdings sharen sich auch alle QGLWidgets den Hauptkontext.

In diesem Fall bezweifle ich, dass ein Debugger den Fehler aufgedeckt hätte.

Ciao,
Stefan
24.02.2009, 08:53:39 Uhr
ZFX - 3D Entertainment
Normal


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