Registriert: Do Aug 25, 2005 16:00 Beiträge: 189
Programmiersprache: Java, C#
Lossy eX hat geschrieben:
Deathball: Ich habe gerade, angeregt von dem was dj3hut1 gesagt hat, deinen Code mal angesehen und ich denke es könnte daran liegen, dass du bei die zwar eine glPushName aufrufst aber nirgenswo ein glPopName zu finden ist. Damit packst du immer einen Namen mehr auf den Stack. Ich denke mal, wenn du ähnlich wie in dem Wiki Artikel zu Selection den Fehlercode abfragst und diesen auswertest wirst du "Stack Overflow" bekommen. Also die Meldung, dass dein Stack übergelaufen ist.
Ich bin ja ungern der Spielverderber, aber selbst wenn ich ein glPopName vor oder nach dem SwapBuffers(DC) einfüge, verhält sich meine Selektion nicht richtig. Wenn ich den Fehlercode abfrage, bekomme ich ein "invalid operation" zurück. Ich hab allerdings keine Ahnung wie die entstanden ist - ich hab so langsam alles was das erzeugen kann auskommentiert und ich krieg den Fehler immer noch. Nur an der Selction hab ich nix kommentiert.
Naja, vorerst egal. Ich denke ich werde das vorerst zu der Akte "großes Mysterium" legen, und evntl. später nochma über die Codes schauen. Vielleicht sehe ich ja dann meinen Fehler.
dj3hut1 hat geschrieben:
Warum es bei dir aber nun trotzdem nicht klappt? Hmmm...also das es im Vollbildmodus nicht ganz korrekt klappt kann ich vielleicht noch erklären. Auf deinem Screenshot sieht es fast so aus, als würdest du direkt zwischen zwei Quadraten klicken. In diesem Falle scheint es fast Zufall zu sein, welches Quadrat dann ausgewählt wird, da ja alle Quadrate im Orthomodus denselben Z-Wert haben (da du direkt von oben raufschaust). Du bekommst dann zwei Hits und deinem Code nach zu urteilen, würde dann das Quadrat, welches den ersten Hit produziert, farblich markiert werden.
Gute Idee, aber ich persönlich hab eher das Gefühl das die Selektion etwas nach unten verschoben ist.
Also so das wenn ich in der Mitte eines Quadrat bin, das Quadrat darunter selektiert wird.
Naja, wie gesagt, ich werde das Thema glaub ich jetzt erstma ruhen lassen und später nochma drüber schauen.
Und danke nochma an euch beide das ihr mir das mit den mehreren Namen erklärt habt. Hat jetzt "klick" bei mir gemacht.
Nur eine letzte Frage(naja, zumindest vorerst meine letzte ) noch: Wie mache ich es eigentlich, das ich nur Quads mit einem bestimmten Z-Wert selektiere?
Das hab ich bisher noch nicht geschafft...
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Invalid Operation werden gerne fabriziert, wenn du innerhalb eines glBegin-glEnd-Blocks Befehle aufrufst die dort nicht hingehören. Schau mal im Wiki bei glBegin nach welche Befehle du verwenden darfst.
OpenGL zeigt immer nur einen Fehler an. Kann sein, dass der Stackfehler durch das Invalid Operation überdeckt wird.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Do Aug 25, 2005 16:00 Beiträge: 189
Programmiersprache: Java, C#
Tja...
ich kann halt leider nix innerhalb eines glBegin...glEnd Bock entdecken was da nit hingehört...
da befinden sich bei mir nur glVertex3f und glTexCoord2f Befehle drin.
cya
Deathball
PS: Was interessant ist das das invalid operation auch kommt, wenn ich den kompletten Block auskommentiere...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das mit einem bestimmten Z-Wert ist leider nicht ganz so einfach, da du als Ergebniss der Selection immer nur GLuints zurück bekommst. Diese wieder auf einen Z-Wert umzurechen sollte etwas kompliziert werden dürfen, da nicht geklärt ist in welchen Bereichen sich die Werte erstrecken. Könnte natürlich sein, dass znear bis zfar auf den Wertebereich einen Cardinals (GLuint) gemapped wurden aber mit Sicherheit sagen kann man es nicht. Aber wenn doch müsstest du nur den entsprechenden Wert aus den Ergebnissen suchen. Derzeit ist es ja immer so, dass der Name der am Nächsten an der Kamera ist genommen wird. Achja. Tiefentest beim Seleketieren abschalten sonst wird er womoglich durch den Tiefentest schon vorher rausgefiltert.
glPopName: Hmmm. War ne Idee. Wobei mir auch gerade einfällt, dass Stack Overflow erst auftreten würde, wenn du 129 mal glPushName machen würdest. Kann dir aber sonst nur mal ans Herz legen dir den Code aus dem Wiki mal genau anzusehen.
Invalid Operation: Das solltest du in jedem Falle erst nehmen. Dabei kann es mitunter zu argen Geschwindigkeitseinbußen kommen oder es werden Befehle nicht ausgeführt die ausgeführt werden sollten. Zur Not solltest du ein mal ALLES auskommentieren und dann Stück für Stück den Fehler suchen. Also wirklich alles außer die Initialisierung des Ansicht. Nachdem du dein OpenGL Initialisiert (und texturen geladen) hast solltest du am Besten auch einmal die Fehler abprüfen. Dort wäre es dann ganz praktisch, wenn diese Meldung mit einem ShowMessage oder so kommt. Evtl passiert der Fehler auch schon vorher. Man weiß es ja nicht.
Registriert: Do Aug 25, 2005 16:00 Beiträge: 189
Programmiersprache: Java, C#
Lossy eX hat geschrieben:
Invalid Operation: Das solltest du in jedem Falle erst nehmen. Dabei kann es mitunter zu argen Geschwindigkeitseinbußen kommen oder es werden Befehle nicht ausgeführt die ausgeführt werden sollten. Zur Not solltest du ein mal ALLES auskommentieren und dann Stück für Stück den Fehler suchen. Also wirklich alles außer die Initialisierung des Ansicht. Nachdem du dein OpenGL Initialisiert (und texturen geladen) hast solltest du am Besten auch einmal die Fehler abprüfen. Dort wäre es dann ganz praktisch, wenn diese Meldung mit einem ShowMessage oder so kommt. Evtl passiert der Fehler auch schon vorher. Man weiß es ja nicht.
Hab ich getan und gemerkt das der Fehler beim laden der Texturen passiert...
zumindest kommt kein invalid operation mehr wenn ich die Prozedur auskommentiere...
Genauer suchen tu ich glaub ich morgen, bin heut nit so in Programmier-Stimmung.
Naja, auf alle Fälle bedank ich mich ma herzlich bei allen die sich Gedanken über meine Probs gemacht haben.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Falls du das mit der Selektion nicht hinbekommst, dann hier ein Angebot. Poste oder schicke mir mal dein Projekt per mail und ich schaue mir den Code mal an und versuche den Fehler zu finden. Also wenn es nicht so wahnsinnig groß ist. Evtl kannst es ja auch so machen, dass die Texturen nicht benötigt werden oder so.
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.