OpenGL - Maus Position

Diskutiere mit über: OpenGL - Maus Position im Mac OS X Entwickler, Programmierer Forum

  1. H.Stony

    H.Stony Thread Starter MacUser Mitglied

    Beiträge:
    552
    Zustimmungen:
    0
    Registriert seit:
    27.03.2004
    hallo leute!

    ich stehe vor folgendem problem: ich brauche für mein opengl programm die position der maus. wenn ich glutMouseFunc verwende bekomme ich nur die position der maus wenn man klickt bzw. di maus loslässt. auch die keyboardFunc kann mir meine position liefern die ruft die fkt aber nur auf wenn eine taste gedrückt wird. auch die glutMotionFunc fällt aus da die nur bei gedrückter taste die position zurückgeben kann


    danke für die hilfe

    h.stony
     
  2. H.Stony

    H.Stony Thread Starter MacUser Mitglied

    Beiträge:
    552
    Zustimmungen:
    0
    Registriert seit:
    27.03.2004
    habe schon selbst di fkt gefunden!

    wers mal brauchen sollte: glutPassiveMotionFunc
     
  3. -Nuke-

    -Nuke- MacUser Mitglied

    Beiträge:
    2.135
    Zustimmungen:
    15
    Registriert seit:
    13.09.2003
    Danke! Hatte ich auch schon länger gesucht.

    Nur bei mir habe ich jetzt noch 2 Probleme, bzw. eines welches 2 Probs verursacht.

    1. Der Mauszeiger geht mit und hält am Bildschirmrand an (bzw. verlässt das Fenster). Dann geht nix mehr.

    2. Der Mauszeiger ist noch da! ;)

    Naja. Das Problem ist einfach das der Zeiger vom System nicht zentriert bleibt. Kennst du vielleicht dafür ne Lösung?
     
  4. H.Stony

    H.Stony Thread Starter MacUser Mitglied

    Beiträge:
    552
    Zustimmungen:
    0
    Registriert seit:
    27.03.2004
    versteh dich jetzt nicht ganz aber mit

    glutSetCursor(GLUT_CURSOR_NONE); kann man den cursor ausblenden! diese fkt kann auch andere parameter haben! man kann also wenn man sich mit der maus über dem opengl fenster ist den mauszeiger ändern! aber die passiveMouseFunc gibt sogar werte außerhalb des fensters an! ich hab das ausprobiert!
    kannst du dein problem vielleicht näher beschreiben?

    außerdem: weiß irgendjemand einen unixbefehl über den man über lan daten auf andere computer senden kann (mehrspielermodus)..soweit ich weiß kann man
    system("unixbefehl"); ausführen! ich weiß aber nicht wie man andere computer mittteilt dass sie diese gesendeten daten empfangen....und dann in mein programm in eine var schreiben...
    hat jemand mit sowas schon erfahrung?


    danke mfg h.stony
     
  5. -Nuke-

    -Nuke- MacUser Mitglied

    Beiträge:
    2.135
    Zustimmungen:
    15
    Registriert seit:
    13.09.2003
    Danke. Damit wäre ein Problem beseitigt.

    Nur das andere erkläre ich noch mal (Sorry, wirklich doof erklärt). Es geht darum. Ich habe eine Szene mit Rundumblick. Umschauen ist ja kein Problem. Nur wenn ich mich mit der Maus umschaue und den Zeiger immer weiter nach rechts (bzw. oben links unten, etc.) bewege, dann hält die Maus irgendwann an -> Bildschirmrand erreicht.

    Wie schaffe ich es mich immer drehen zu können? edit: Außerdem bleibt die Maus stehen, wenn ich eine Taste drücke. :(

    Zu deinem Netzwerkproblem. Das wird ja schon komplexer.
    Du brauchst dazu von dem System die Librarys für TCP/IP. Dann musst du dir einen Port aufmachen, an den du denn die Daten sendest, bzw. empfängst. Also musst du senden und horchen. Das dann auswerten.

    Mit einem Unix-Befehl wird das schlecht gehen.
     
    Zuletzt bearbeitet: 12.06.2004
  6. H.Stony

    H.Stony Thread Starter MacUser Mitglied

    Beiträge:
    552
    Zustimmungen:
    0
    Registriert seit:
    27.03.2004
    bei deinem prob weiß ich leider selbst nicht weiter..außerdem wenn ich dich richtig verstanden habe steuerst du die glrotate über die werte der maus? ich finde das nämlich seltsam..ich habe mir die postioinen der maus ausgeben lassen und ich bekam auch außerhalb des fensters werte! also könntest du machen: wenn di position unter bzw über einem wert ist soll gescrollt werden...könnte ich vielleicht deinen code sehen (ist ok wenn du ihn für dich behalten willst aber ich hätte mir gerne sowas mal angeschaut [ich habe früher nur flash sachen gemacht und bin in openGL noch ziemlicher anfänger]


    hab ich mir schon gedacht! ich dachte nur vielleicht weiß einer ein tut für solche dinge! aus meiner windows zeit: ich habe über netsend und vb (AAHHH) eine kommunikation geschrieben und dachte ich bekomme es hier auch leicht hin! also falls jemand für kommunikation über tcp/ip ein tut weiß: bitte einen link schicken
     
  7. -Nuke-

    -Nuke- MacUser Mitglied

    Beiträge:
    2.135
    Zustimmungen:
    15
    Registriert seit:
    13.09.2003
    Ja. Ich mache es ja auch so. Es geht ja auch außerhalb des Fensters. Dadurch errechne ich mir den entsprechenden Winkel. Den übergebe ich dann an glRotate.

    Also meine moition-Func sieht so aus (mit glutPassiveMotionFunc aufgerufen):

    PHP:
    void motion(int xint y)
    {
          
    // Winkel aus Mausbewegung errechnen >> *(AnimaBremse*100) ist zur Verlangsamung
          
    xangle xangle - (mousey) *(AnimaBremse*100);
          
    yangle yangle - (mousex) *(AnimaBremse*100);
          
    mousex x;
          
    mousey y;
          
    cout << "Winkel um Y: " << yangle << "  >>><<< Winkel um X: " << xangle << endl;              
    }
    Dann die Methode für die Modell-Postionen (in der Zeichnen-Routine enthalten):

    PHP:
    //neue Modellposition berechnen
    inline void errechneModellPos(void)
    {
        
    glViewport00widthheight );
        
    glMatrixMode(GL_PROJECTION);
        
    glLoadIdentity();
        
    GLfloat wh width/height;
        
    gluPerspective(45.0f,wh,1.0f,30000.0f);
        
    glMatrixMode(GL_MODELVIEW);
        
    glLoadIdentity();    
        
    glRotatef(xangle1.00.00.0);
        
    glRotatef(yangle0.01.00.0);
        
    glTranslatef(posxOposyOposzO);
    }
    Den gesamten Code posten wird etwas viel, da es schon rund 900 Zeilen sind. Ist zum größten Teil aber OpenAL und ne Klasse für Laser-Strahlen und ne Klasse für Texturen.

    Wenn du für ein kleines OpenGL-Projekt Texturen laden willst, dann kann ich dir meine Textur-Klasse geben. Ist dann leicht ne Textur zu laden. :)
     
Die Seite wird geladen...
Ähnliche Themen - OpenGL Maus Position Forum Datum
OpenGL winding order problem ungelöst Mac OS X Entwickler, Programmierer 06.11.2015
Antwort zu openGL anti-aliazing Mac OS X Entwickler, Programmierer 30.10.2012
Frage zur Objektprogrammierung mit OpenGL Mac OS X Entwickler, Programmierer 06.06.2012
[OpenGL ES] Linien Zeichnen Mac OS X Entwickler, Programmierer 09.03.2011
Cocoa OpenGL Rendern mit Timer / Idle? Mac OS X Entwickler, Programmierer 09.02.2011

Diese Seite empfehlen

Benutzerdefinierte Suche