[OpenGL] Fragen zum Thema Selection
-
Ich habe eine Anwendung, in der verschiedene 3D-Objekte gezeichnet werden. Nun soll der User diese per Maus auswählen könne. Dazu habe ich im RedBook folgendes gefunden http://fly.cc.fer.hr/~unreal/theredbook/chapter12.html
nun habe ich selection in meiner Anwendung eingebaut. Das auswählen funktioniert aber nicht per Maus. Beim 2. redraw, wird einfach das gemalte Objekt ausgewählt.
1. Habe ich selection falsch verstanden und es arbeitet anders?
2. Ansonsten wie kann ich dafür sorgen, dass selection vernünftig arbeitet und ich mit der Maus (am besten Rechte Maustaste) das Objekt auswählen kann?(Ich denke nicht, dass es nötig ist Code zu zeigen. Da mein Code erstens enormen Umfang hat und sich 2. ziemlich an dem Beispiel orientiert aus dem RedBook (nur verschachtelter ;)))
-
kingruedi schrieb:
Ich habe eine Anwendung, in der verschiedene 3D-Objekte gezeichnet werden. Nun soll der User diese per Maus auswählen könne. Dazu habe ich im RedBook folgendes gefunden http://fly.cc.fer.hr/~unreal/theredbook/chapter12.html
nun habe ich selection in meiner Anwendung eingebaut. Das auswählen funktioniert aber nicht per Maus. Beim 2. redraw, wird einfach das gemalte Objekt ausgewählt.
1. Habe ich selection falsch verstanden und es arbeitet anders?
2. Ansonsten wie kann ich dafür sorgen, dass selection vernünftig arbeitet und ich mit der Maus (am besten Rechte Maustaste) das Objekt auswählen kann?(Ich denke nicht, dass es nötig ist Code zu zeigen. Da mein Code erstens enormen Umfang hat und sich 2. ziemlich an dem Beispiel orientiert aus dem RedBook (nur verschachtelter ;)))
1. das können wir nicht wissen, aber ich denke, dass es falsch arbeitet! vielleicht hast du irgendwo falsche werte angegeben.
2. siehe 1.hast du dir die Basic Steps angeschaut und bist du danach vorgegangen? ich habe auch ein beispiel in diesem Thread! bin auch nach dem Red Book vorgegangen...
-
Also wenn ich den Beispiel Code ausprobiere, dann kommt immer nur, egal wo und wie ich auf die Objekte klicke, dass Objekt 1 und 3 ausgewählt wurden. Ist vielleicht meine OpenGL Implementierung defekt? (btw. arbeite unter Linux mit NVIDIA Drivern)
Mein Code ist ein bisschen lang, ich versuch mal ein kurzen Beispiel Code zu zeigen, wie das aussieht bei mir
class draw { static const size_t SELECT_BUFFER_SIZE=512; GLuint select_buffer[SELECT_BUFFER_SIZE]; GLuint hits; void bearbeite_select(); //gibt den select_buffer aus, wie im Beispiel public: void draw_object(); }; void draw::draw_object() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRenderMode(GL_RENDER); glBegin(GL_POINTS); glVertex3f(0,0,0); glEnd(); glSelectBuffer(SELECT_BUFFER_SIZE,select_buffer); glRenderMode(GL_RENDER); glInitNames(); glPushName(-1); glLoadName(1); glBegin(GL_POINTS); glVertex3f(0,0,0); glEnd(); hits=glRenderMode(GL_RENDER); bearbeite_select(); }
-
*push*