перенасыщение простоя в Windows 8 — рендеринг

Я использую freeglut, windows 8, vs2012 и новейший драйвер nvidia. Но у перенасыщенных бездействующих функций странное поведение. Это ничего не делает, пока я не изменю размер окна или не нажму на окно.

Или каким-то образом перенасыщение не хочет перерисовывать экран, даже если некоторые переменные изменились.

#include <iostream>
#include <stdlib.h>
#include <GL/glut.h>

using namespace std;GLfloat rotateQuad = 0;void initRendering() {glEnable(GL_DEPTH_TEST);

}

//Called when the window is resized

void handleResize(int w, int h) {

//Tell OpenGL how to convert from coordinates to pixel values

glViewport(0, 0, w, h);}

//Draws the 3D scene

void drawScene() {

//Clear information from last draw

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective

glLoadIdentity(); //Reset the drawing perspective

glRotatef(rotateQuad,0,0,1);

glBegin(GL_QUADS); //Begin quadrilateral coordinatesglVertex3f(-0.5f, -0.5f, 0.0f);

glVertex3f(0.5f, -0.5f, 0.0f);

glVertex3f(0.5f, 0.5f, 0.0f);

glVertex3f(-0.5f, 0.5f, 0.0f);

glEnd(); //End quadrilateral coordinatesglutSwapBuffers(); //Send the 3D scene to the screen

}
void idle(){
rotateQuad+=1;
if(rotateQuad > 360) rotateQuad=0;
}
int main(int argc, char** argv) {

//Initialize GLUT

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);

glutInitWindowSize(400, 400); //Set the window size

//Create the window

glutCreateWindow("Quad Rotate");

initRendering(); //Initialize rendering

glutIdleFunc(idle);

glutDisplayFunc(drawScene);

glutReshapeFunc(handleResize);

glutMainLoop(); //Start the main loop

return 0;

}

Есть идеи, что пошло не так?

1

Решение

Ваш idle функция просто обновляет вращение; фактически он не запрашивает перерисовку GLUT, поэтому перерисовки не происходит, пока что-то еще не вызовет ее (например, взаимодействие с окном или изменение размера). Вызов glutPostRedisplay в вашем режиме ожидания. Увидеть: http://www.lighthouse3d.com/tutorials/glut-tutorial/glutpostredisplay-vs-idle-func/

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]