Seite 1 von 1

GL-Picking & Shader => Fail?

Verfasst: 01.04.2011, 10:21
von joggel
Hallo und Moin,

also, ich experimentiere gerade etwas mit Qt+Shader rum.
Läuft soweit ganz gut ein bequem.
Aber
Ich verwende in meinem Projekt Picking sieh hier.
Ohne Shader funktioniert das alles auch sehr gut, schalte ich nun einen Shader dazu, statt der FFP, klappt die Darstellung nicht mehr richtig. Zb: Szene wird nicht richtig gelöscht, "Pixel-Müll" auf dem Screen und im schlimmsten Fall kommt es zu einem Absturz, bei dieser Zeile:

Code: Alles auswählen

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Ich habe es jetzt so gelöst, dass wenn ich in das Fenster klicke, wird die Picking-Funktion aufgerufen und die Szene ohne Shader gerendert. Das funktioniert auch alles gut.
Das kann ich aber nur machen, weil ich nix besonderes im Vertex-Shader anstelle! Was ist nun, wenn ich dort irgendwelche zusaetzlichen Transfomationen mache und so...?! Dann ist die Geometrie der Szene ja eine andere als wenn ich sie über die FFP rendere!

Mich würde mal interessieren, ob jemand weiß wieso sich OpenGL da so verhält?
Und gibt es eine andere Möglichkeit des Pickings als oben beschrieben?

es grüßt .... usw.

Re: GL-Picking & Shader => Fail?

Verfasst: 01.04.2011, 10:45
von kimmi
Ich empfehle dir, Picking durch eine Kollisionsabsfrage zu implementieren. Dazu rechnest du zunächst die Fensterkoordinaten des Button-Down-Events in die Model-View-Koordinaten um und generierst dann aus diesen einen Strahl, der in Blickrichtung in die Szene zeigt. Gegen diesen amchst du nun eine Kollisionsabfrage und bist glücklich.
Der folgende FAQ-Eintrag bietet einen ganz guten ersten Einblick in das Thema: http://www.opengl.org/resources/faq/tec ... ection.htm

Gruß Kimmi

Re: GL-Picking & Shader => Fail?

Verfasst: 01.04.2011, 16:04
von dot
Jop, diesen Selection Buffer Kram sollte man lieber bleiben lassen...