Problem
Właśnie zacząłem pracować z OpenGL przy użyciu GLUT. Poniższy kod kompiluje i wyświetla dwie kostki szkieletu i kulę. Problem polega na tym, że podczas próby przeciągnięcia lub zmiany rozmiaru okna wywołuje zauważalne opóźnienie przed podążeniem za myszą.Okno OpenGL GLUT bardzo wolno, dlaczego?
Ten problem nie występuje na komputerze mojego kolegi, ten sam kod.
Pracuję z Visual Studio 2012 C++ express na komputerze z systemem Windows 7. Nie jestem doświadczonym programistą.
Kod
// 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();
}
tylko zgadnij, ale może spróbuj dodać "Sleep (1)" w funkcji "draw" –
To faktycznie zadziałało! Czy znasz techniczny powód tego działania i dlaczego go potrzebuję, podczas gdy moi koledzy nie? – aPerfectMisterMan