Ich Hab mich durch das Tutorial gehangelt und die Selections Rutine schmeist mir auch den Namen der Angklickten Primitives entgegen. DAs funktioniert soweit ganz gut aber ab und zu (ca. bei jedem 5 - 7 mal) behauptet das auf nix geklickt wurde (Rückgabe Wert also -1) obwohl ein Quad selectiert wurde. Zudem springt der sichtbare ausschnitt. Ich hab keine Ahnung woran das liegt.
Hier Die Selections Procedur:
Code:
function TForm1.Selection(xs,ys :integer):integer;
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du darfst den ViewPort und die Perspektive nicht in der DrawMap setzen. Wenn du so etwas wärend der Selektion machst zerstörst du die Matrix und dann bekommst du keine sinnvolle Selektion mehr.
Aber, an glViewport und an glPerspectiv kanns net liegen hab das mal ausprobiert. Die Selection als solche funktioniert ja auch. Das Problem ist nur, dass ab und zu mal ein falscher Ert zurückgegeben wird. Dann Springt der gerade gezeigte Ausschnitt auf den Ausgang zurück. Die gezeichnete Szene wird mittels translate verschoben. Die Selection funktioniert ca. in 80% der Fälle machnmalm wird aber wie schon gesagt die ganze gezeigte Szene verrückt. Hat das vielleicht was damit zutun das ich zwei Renderkontexte verwende.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Habe auch gerade mal für deinen Code die Pascal Tags verwendet.
Das Hauptproblem an der Selektion ist, dass diese extrem empfindlich auf Veränderungen reagiert und das man nicht sieht wie sie sich verhält. Also ein reiner Blindflug.
Okay. Wenn ich jetzt noch mal drüber schaue könntest du mit dem gluPerspective auch recht haben. Das muss ja auch nach gluPickMatrix aufgerufen werden. Wie das mit dem ViewPort aussieht weiß ich nicht. Den benutzt du ja auch für die PickMatrix. In der Regel bietet sich auch an die Perpektive und den ViewPort nur dann neu zu setzen, wenn der sich auch verändert hat. Also in einem OnResize des Forms oder so.
Dann mal zum Code. Bei dem glTranslatef(0, 0, -5). Du befindest dich dort eigentlich auf der ProjektionsMatrix. Da solltest du vorher auf die ModelViewMatrix wechseln. Das könnte es evtl auch schon gewesen sein. Deckt sich jedenfalls mit der letzten Beschreibung. So noch ohne Kaffee betrachtet.
Im Selection Artikel findest du im Rendercode ein bisschen Code zum Abfragen des Rendermodus. Das solltest du auch tun und dann entsprechend dein SwapBuffer weglassen. Wärend der Selektion wird nichts gerendert sondern in einen Feedbackbuffer geschrieben. Wenn du dann wechselst dann siehst du ein alten bzw. korruptes Bild. Das äußerst sich als kurzes Flackern oder so.
Flash: Ich weiß persönlich nicht was man da noch machen sollte. Der Code und die ganzen Beschreibungen sollten eigentlich alles abhandeln was möglich wäre.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Na halt nochmal draufhinweisen, dass die Perspektive in den durchläufen gleich sein muss, und das dieses und jenes nicht gemacht werden darf. EInfach nochmal ne kurze zusammenfassung in Tabelarischer form.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.