auf welche Koordinaten zeigt der Mauszeiger?
-
Hallo
Ich habe mit OpenGL grosses Quadrat gezeichnet dass ich als Boden brauche (soll später durch Heightmap ersetzt werden). Wie kann ich jetzt rausfinden bei welchen koordinaten ich mit dem Mauszeiger auf den boden zeige? ich hoffe euch ist klar was ich meine..

-
das Schlagwort fuer Google lautet "Picking"

-
Da kriegt man doch einfach das objekt raus das in der nähe vom mauszeiger ist und nicht die koordinaten. mein boden-objekt ist ja ziemlich gross..
-
gluUnProject:
Strahl daraus berechnen, und mit dem Quad schneiden lassen.
-
Hier ist ein simpler Beispielcode.
GLint viewport[4]; GLdouble mvmatrix[16], projmatrix[16]; void s2Dto3D (int x,int y) { GLint realy; GLdouble wx, wy, wz; int z; realy = viewport[3] - (GLint) y - 1; glReadPixels(x,realy, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &zwert); glGetIntegerv(GL_INDEX_MODE,&z); if(z!=GL_INVALID_ENUM && z!=GL_INVALID_VALUE && z!=GL_INVALID_OPERATION) { gluUnProject ((GLdouble) x, (GLdouble) realy,(GLdouble) zwert, mvmatrix, projmatrix, viewport, &cursorx, &cursory, &cursorz); } }die parameter x und y sind nichts anderes als die 2d mauszeiger positionswerte vom bildschirm.
in cursorx/y/z werden hinterher die koordinaten gespeichert. wenn du vor hast eine kugel oder so auf diese koordinaten zu rendern, ist es ratsam den code zu verbessern, weil der auch die koordinaten der schrift oder andere 2d geometrien umrechnet.