Keresés

Új hozzászólás Aktív témák

  • mlacimk

    csendes tag

    válasz Vico87 #172 üzenetére

    Először is kösz a választ!
    Azóta már én is eljutottam a glReadPixels-es módszerig, de sajnos ezzel is van egy kis gondom. Méghozzá az, hogy nem minden alkalommal olvassa ki jól a mélységet, vagyis kb. minden 4-5. alkalommal csupa 0-t ad vissza ugyanarra a pozícióra...
    A glTranslate-ben pedig azért 0-t adok z-nek, mert a z=0 síkon mozgatok.
    Majd próbálkozom, de ha lenne valami ötleted, azt is szívesen fogadom :)
    Üdv:
    Laci

  • mlacimk

    csendes tag

    Sziasztok!
    Egy olyan problémám lenne, hogy egy "léghoki" játékot írok opengl-ben és az ütő kirajzolásához a koordinátákat az egér helyzetéből veszem gluUnProject-el, azonban nem a jó koordinátákat kapom. A játékban az asztal körül a szobában is lehet "sétálni", amire gluLookAt-et használok. Séta módban az irányítás egérrel és billentyűzettel történik, játék módban pedig, az aktuális helyről, ahová sétáltam a szobában, onnan kell az egérrel mozgatni az asztalon az ütűt.
    Íme a kód kicsit leegyszerűsítve:

    //Itt kezdődik a display...
    gl.glClearColor(0.0f, 0.0f, 0.0f, 1);
    gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
    gl.glMatrixMode(GL.GL_MODELVIEW);
    gl.glLoadIdentity();
    glu.gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, 0.0f, 0.0f, 1.0f);
    szobaKirajzol(gl); //Szoba kirajzolás
    asztalKirajzol(gl); //Asztal kirajzolása
    if(mod == 1) { //a séta/játék mód eldöntése...
    gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, projmatrix, 0);
    gl.glGetDoublev(GL.GL_MODELVIEW_MATRIX, mvmatrix, 0);
    gl.glGetIntegerv(GL.GL_VIEWPORT, viewport, 0);
    realy = viewport[3] - (int) y_eger - 1;
    glu.gluUnProject((double) x_eger, (double) realy, 0.0f,
    mvmatrix, 0,
    projmatrix, 0,
    viewport, 0,
    wcoord, 0);
    x_koord = (float)(wcoord[0]);
    y_koord = (float)(wcoord[1]);
    gl.glPushMatrix();
    gl.glTranslatef(x_koord, y_koord, 0); //ütő a megkapott pozícióba rajzolása
    utoKirajzol(gl);
    gl.glPopMatrix();
    }
    gl.glFlush(); //vége...

    A kérdésem az, hogy mit rontottam el, hogy nem a jó koordinátákat kapom, illetve, hogy, ha men ezzel a módszerrel kell megcsinálni, akkor hogyan?
    Előre is kösz a válaszokat!
    Üdv:
    Laci

Új hozzászólás Aktív témák