Il problema
Ho appena iniziato a lavorare con OpenGL utilizzando GLUT. Il codice sottostante compila e visualizza due cubi wireframe e una sfera. Il problema è che quando tento di trascinare o ridimensionare la finestra induce un ritardo notevole prima di seguire il mio mouse.La finestra OpenGL GLUT è molto lenta, perché?
Questo problema non si verifica sul computer del mio collega, stesso codice.
Sto lavorando con Visual Studio 2012 C++ express su un computer Windows 7. Sono un programmatore non esperto.
Il codice
// OpenGLHandin1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <GL/glut.h>
void initView(int argc, char * argv[]){
//init here
glutInit(&argc, argv);
//Simple buffer
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(800,400);
glutCreateWindow("Handin 2");
}
void draw(){
glClearColor(0,0,0,1);
glClear(GL_COLOR_BUFFER_BIT);
//Background color
glPushMatrix();
glLoadIdentity();
glTranslatef(0.6, 0, 0);
glColor3f(0.8,0,0);
glutWireCube(1.1); //Draw the cube
glPopMatrix();
glPushMatrix();
glLoadIdentity();
glTranslatef(-0.5, 0, -0.2);
glColor3f(0,0.8,0);
glutWireCube(1.1); //Draw the cube
glPopMatrix();
glPushMatrix();
glLoadIdentity();
glTranslatef(0, 1.2, 0);
glRotatef(90, 1, 0, 0);
glColor3f(1,1,1);
glutWireSphere(0.6, 20, 20); //Draw the sphere
glPopMatrix();
//draw here
//glutSwapBuffers();
glutPostRedisplay();
glFlush();
}
void reshape (int w, int h){
glViewport(0,0,w ,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (float)w/(float)h, 1.5, 10);
gluLookAt(1.5, 2.5, 4,
0, 0.6, 0,
0, 1, 0); //Orient the camera
glRotatef(5, 0, 0, 1);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char * argv[])
{
initView(argc,argv);
glutDisplayFunc(draw);
glutReshapeFunc(reshape);
glutMainLoop();
}
solo una supposizione, ma forse prova ad aggiungere 'Sonno (1)' nella tua funzione 'draw' –
Che ha funzionato davvero! Conoscete la ragione tecnica di questo lavoro e perché ne ho bisogno mentre i miei compagni non lo fanno? – aPerfectMisterMan