gluProject gibt immer den gleichen Mist aus
-
Maaal wieder liegt alles auf dem Laptop..
Also.. in Ungefähr tu ich das:
void my3window::draw (void) { vector<cPoint*>::iterator itp; this->cam->showScene(); glBegin(GL_POINTS); FOREACH(itp, this->pointlist) { (*itp)->draw(); } glEnd(); ... SwapBuffers(); }Die draw-Methode sieht der cPoint sieht so aus:
void cPoint::draw (void) { double modelview[16], projection[16]; double x, y, z; GLint viewport[4]; getDoublev(GL_MODELVIEW_MATRIX, modelview); getDoublev(GL_MODELVIEW_MATRIX, projection); getIntegerv(GL_VIEWPORT, viewport); gluProject(this->pos[0], this->pos[1], this->pos[2], modelview, projection, viewport, &x, &y, &z); this->projected[0] = x; this->projected[1] = y; this->projected[2] = z; glVertex3fv (this->pos); }Die projezierten Koordinaten liegen bei mir immer auf 106.5, 312, 0.5, egal wo ich die Punkte hinsetze. Dies widerspricht allerdings meiner Erwartungshaltung..
Hat zufällig wer ne Ahnung, was ich schon wieder falsch mache und sagt es mir auch noch?
-
ich versteh es nicht..
hab mal was geändert. In meiner Cam-Klasse mach ich ein gluLookAt. Anschließend hatte ich den depth buffer gelöscht.
Das mach ich jetzt vor dem lookat.Wie auch immer. Jetzt bekomm ich immer die Werte 0 für x und y, dafür aber riesige negative Werte für z. - Meistens.. Mein Protokoll zeigt gelegentlich ganz andere Sachen an
Hat da wer ne Idee, woran das liegen kann?
-
eventuell durch w teilen

ich weiss nciht was die funktion macht, aber an sich multiplizierst du den punkt mit den beiden matrizen, dividierst durch w, und verschiebst es in den viewport, das ist eigentlich recht simpel.
-
*gg*
ich bin mehr oder weniger unfreiwillig Grafikprogrammierer und hab derzeit eigentlich ganz anderes am Hals.
Kannst mir das evtl. mal in nem 10-Zeiler erläutern? w ist genau was?