[C++] Muis Positie veranderen, Met of zonder GLUT?

Pagina: 1
Acties:
  • 95 views sinds 30-01-2008

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Ik ben bezig om beweging met de muis te realiseren, maar zit met het probleem dat de muis binnen een bepaalde window maximaal kan bewegen. Ik kan zo dus nooit een 360 graden draai maken. Weet iemand hoe ik de muispositie reset naar een bepaald punt (center) van het scherm bij C++ (Windows).

Kan dit zonder GLUT? (ik gebruik zoiezo al OpenGL)

Verwijderd

SetCursorPos (wow die lag best voor de hand)

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op zondag 18 november 2001 19:50 schreef Yarvieh het volgende:
SetCursorPos (wow die lag best voor de hand)
hmm indeed :)

jammer dat het niet het gewenste effect geeft... moet dus toch GLUT gebruiken.

Verwijderd

Doet precies wat het doen moet denk ik, muiscursor zetten, wat er verder niet goed gaat dan kan ik zo ook niet raden :)

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op zondag 18 november 2001 20:07 schreef Yarvieh het volgende:
Doet precies wat het doen moet denk ik, muiscursor zetten, wat er verder niet goed gaat dan kan ik zo ook niet raden :)
Niet helderziend?? jammer, zou een heleboel typwerk schelen :)

Wat er mis gaat is dat die her-positionering weer wordt opgevangen door mijn programma, en daardoor weer op dezelfde positie terugkomt als waar het scherm heenmoest. Dus het draaien lukt dan niet echt met de muis.

Verwijderd

Op zondag 18 november 2001 20:30 schreef Scorpion het volgende:

[..]

Niet helderziend?? jammer, zou een heleboel typwerk schelen :)

Wat er mis gaat is dat die her-positionering weer wordt opgevangen door mijn programma, en daardoor weer op dezelfde positie terugkomt als waar het scherm heenmoest. Dus het draaien lukt dan niet echt met de muis.
Dan zet je ff 'n flag dat je zelf de muis aan het verplaatsen bent? En negeer je de beweging als die flag aanstaat?

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
Op zondag 18 november 2001 20:32 schreef Yarvieh het volgende:

[..]

Dan zet je ff 'n flag dat je zelf de muis aan het verplaatsen bent? En negeer je de beweging als die flag aanstaat?
hmm idd...

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
nope.. wil niet helpen.. hmm :(

  • Scorpion
  • Registratie: April 2000
  • Laatst online: 18-01-2024

Scorpion

not to lame to read BitchX.doc

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Check if the mouse has moved, ifso, update screen positions, and reset
// mouse position.
void MouseMoved() {
    bool bRedrawScene = false;

    GetCursorPos(&mousePos);
    int mx = mousePos.x;
    int my = mousePos.y;
    if ((mx!=SCREEN_WIDTH>>2) || (my!=SCREEN_HEIGHT>>2)) {
        bRedrawScene = true;
        if (mx & 1 << 15) mx -= (1 << 16);
        if (my & 1 << 15) my -= (1 << 16);
        update(ROTATE,SCREEN_WIDTH>>2,mx,SCREEN_HEIGHT>>2,my);
    }

    SetCursorPos(SCREEN_WIDTH>>2,SCREEN_HEIGHT>>2);
    if (bRedrawScene) RenderScene();
}

Luisterde naar een Windows Message voor muis positie etc... Maar heb dit gewoon op interval gezet. Werkt nu dus wel :)

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

Ik ben ook bezig met 'rondkijken' in OpenGL. Ik gebruik hier GLUT voor.
Bij mij wil hij dus ook niet verder draaien als ik eenmaal aan de rand van het scherm ben. Ik dacht dit opgelost te hebben met SetCursorPos(), maar als ik dit doe, dan daalt de framerate van 200 naar 0,5 fps en gaat het cpu-verbruik naar 100%. Als ik het SetCursorPos-statement commentariseer, wrkt het weer wel.

Wat kan het probleem zijn?

C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void mouseMotion(int x, int y)
{
    bool changed = false;
    if(x != mouseX)
    {
        float moveX = (x - mouseX)/1000.0f;

        orientMe(moveX);
        changed = true;
    }

    if(y != mouseY)
    {
        float moveY = y - mouseY;
        changed = true;
    }

    if(changed)
    {
        SetCursorPos(800, 600);
        mouseX = 800;
        mouseY = 600;
    }
}

Fat Pizza's pizza, they are big and they are cheezy


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-05 23:07

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je kunt beter een nieuw topic openen ipv een topic van 2.5 jaar oud te kicken. Maak wel even een mooie topicstart, en je kunt evt. een linkje naar deze topic meegeven ter referentie :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.