PDA

View Full Version : Problem with drawing update.



robgeek
01-25-2013, 05:59 AM
Hello guys.
I'm trying to make a drawing in a window change his size every time i hit 'b' in my keyboard, but is not working properly.
Every time i hit 'b', "glVertex3f(x,y,z)" in "renderPrimitive()"function recieves new values for x and y and may drawing gets bigger. This is working fine, but my drawing gets bigger only if i click outside of my window and click back in the window. What i have to do to solve this problem?

void renderPrimitive(void)
{
glBegin(GL_QUADS);
//spaceship is a global TAD who update his variables everytime i hit 'b', i do this in a callback.
glVertex3f(spaceship->blcx, spaceship->blcy, 0.0); // The bottom left corner
glVertex3f(spaceship->tlcx, spaceship->tlcy, 0.0); // The top left corner
glVertex3f(spaceship->trcx, spaceship->trcy, 0.0); // The top right corner
glVertex3f(spaceship->brcx, spaceship->brcy, 0.0); // The bottom right corner
glEnd();
}

void reshape(int width, int height)
{
glViewport(0, 0, (GLsizei)width, (GLsizei)height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60, (GLfloat)width / (GLfloat)height, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
}

void display(void)
{
glClearColor(1.f, 0.f, 0.f, 1.f);
glClear (GL_COLOR_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.0f);
renderPrimitive();
glFlush();
}

int main(int argc, char **argv)
{
spaceship = create_spaceship(spaceship);
glutInit(&argc, argv);

glutInitDisplayMode (GLUT_SINGLE);
glutInitWindowSize (800, 600);
glutInitWindowPosition (100, 50);
glutCreateWindow ("My first OpenGL Window");

glutDisplayFunc(display);
glutReshapeFunc(reshape);

glutKeyboardFunc(key_pressed);

glutMainLoop();
}

robgeek
01-25-2013, 09:40 AM
I put "glutIdleFunc(display);" between "glutDisplayFunc(display);" and "glutReshapeFunc(reshape);" in "main" function, and ir works, but my window almost freezes, it gets heavy very very heavy!
I tried to put after both functions too, but same thing happened.

robgeek
01-25-2013, 01:41 PM
Please guys, i really need your help to solve this problem.

tonyo_au
01-26-2013, 10:42 PM
Your idle function should not be you display function it should just invalid the view.