Mauszeiger als Licht in OGL



  • Hi, ich würde gerne in OGL beim Mauszeiger eine Lichtquelle haben! (Also in jedem Frame die Position eines Lichtes zum Mauszeiger hin zu ändern)

    Ich habe jetzt folgenden Code:

    POINT mPos;
        GetCursorPos(&mPos); 
    
        double x, y, z;
    
        double mView[16];
        glGetDoublev(GL_MODELVIEW_MATRIX, mView);
        double pMatrix[16];
        glGetDoublev(GL_PROJECTION_MATRIX, pMatrix);
        int viewport[4];
        glGetIntegerv(GL_VIEWPORT, viewport);
    
        gluUnProject(mPos.x, viewport[3]-mPos.y, 0.0f, mView, pMatrix, viewport, &x, &y, &z); 
    
        float lightPosition2[3]={x, y, z};
        glLightfv(GL_LIGHT1, GL_POSITION, lightPosition2);
    

    jedoch klappt der nicht so wirklich... kan vielleicht jemands helfen?

    ARGH, shit, falsches forum, bitte verschieben!!!

    [ Dieser Beitrag wurde am 19.06.2003 um 21:20 Uhr von DasPinsch editiert. ]



  • ich hab genau das gleiche problem!
    hab so ziemlich den gleichen code..
    wie in meinem thread beschrieben, sind nach dem gluUnProject() aufruf die variablen x, y und z mit 'nan' gefüllt..
    nur wenn die mauskoordinaten direkt am rand des fensters sind (also ungefähr gleich 0 oder gleich MaxX und MaxY)
    stehen da irgendwelche zahlen drin, aber nicht die richtigen..

    wenn du das problem mittlerweile gelöst hast, sag mal bitte wie..



  • Hmm, nein, habs noch nicht gelöst... was mir aber aufgefallen ist, ist, dass die zu beleuchtenden teile eh falsch beleuchtet wurden, und es daher theoretisch sein *könnte* dass der obige code stimmt



  • also, bei mir läufts jetzt..
    hatte glGetFloatv(..) benutzt, um die matrizen zu bekommen und später gecastet.. 🙄
    mit glGetDoublev() hab ich keine probleme mehr..

    jetzt sieht mein code tatsächlich so aus wie deiner.. also daran wirds, denk ich, nicht liegen..



  • Original erstellt von LucKsuS:
    **also, bei mir läufts jetzt..
    hatte glGetFloatv(..) benutzt, um die matrizen zu bekommen und später gecastet.. 🙄
    **

    ja sauber, geht bei mir jetzt auch, hatte vergessen bei dem objekt die normals anzugeben 🙄


Anmelden zum Antworten