Archief - Opengl FPS mouselook niet volledig smooth

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

yannick

Legacy Member
Beste,

Ik heb even een rudimentaire fps mouselook geschreven, maar ondervindt bij zeer kleine bewegingen toch dat het niet heel vlot gaat.

Code:
int main(int argc, char** argv) {
...
glutDisplayFunc(drawScene);
glutIdleFunc(updateMouse);
...
}

void drawScene() {
//Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(xrot,0,1,0);
glRotatef(yrot,1,0,0);
glTranslatef(0.0f,0.0f,0.0f);

glPushMatrix();
...
glPopMatrix();
updateMouse();
glutSwapBuffers(); //Send the 3D scene to the screen
}

void updateMouse() {
POINT ptCursorPos;
GLfloat centerX=glutGet(GLUT_WINDOW_WIDTH)/2;
GLfloat centerY=glutGet(GLUT_WINDOW_HEIGHT)/2;

//Getting cursor position under windows
GetCursorPos(&ptCursorPos);

float x=ptCursorPos.x;
float y=ptCursorPos.y;
float diffx=x-centerX;
float diffy=y-centerY;

xrot+=diffx*0.2;
yrot+=diffy*0.2;
glutWarpPointer(centerX,centerY);
glutPostRedisplay();
}

Zou iemand mij een manier kunnen zeggen om de muis te "smoothen", ik mag niets anders gebruiken dan wat er standaard in c++ en openGLUT zit.
Het moet ook platform onafhankelijk zijn (GetCursorPos is niet platform onafhankelijk, maar daar zoek ik nog iets op :)).

Met vriendelijke groeten
Yannick

SharkyXTS

Legacy Member
Waarom voer je in je drawScene() methode nog eens de methode updateMouse() uit? Lijkt me toch niet optimaal aangezien je die updateMouse al als idle functie gebruikt en daarnaast voer je constant glutSwapBuffers() en glutPostRedisplay() uit.

yannick

Legacy Member
SharkyXTS zei:
Waarom voer je in je drawScene() methode nog eens de methode updateMouse() uit? Lijkt me toch niet optimaal aangezien je die updateMouse al als idle functie gebruikt en daarnaast voer je constant glutSwapBuffers() en glutPostRedisplay() uit.

Nee idd, dat was totaal niet ideaal. Momenteel gebruik ik een timerfunc die om de ms voor een muis update checked. Werkt al veel beter nu :).

Wel merk ik dat mijn fps afhankelijk is van deze timerfunc, hoe kleiner het tijdsinterval hoe groter mijn fps. Werkt dit zoals het hoort of zou dit niet het geval mogen zijn?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan