Dal codice che ho di un programma che disegna e sposta un quadrato attorno a una finestra dell'applicazione, ho problemi durante il ridimensionamento della finestra dell'applicazione. Quando gestisco un ridimensionamento e altero gli stati di conseguenza, tutto sullo schermo che deve essere disegnato ed era prima che il ridimensionamento svanisca. Non ho idea del perché, poiché nessuna delle coordinate interne degli oggetti viene modificata durante il ridimensionamento della finestra.Gestione del ridimensionamento della finestra utilizzando OpenGL e SDL
La mia domanda è qualcuno mi può puntare nella giusta direzione per risolvere il mio problema (Il codice compila bene)
void ResizeWindow()
{
screen_width = event.resize.w;
screen_height = event.resize.h;
SDL_SetVideoMode(screen_width, screen_height, bpp, SDL_OPENGL | SDL_RESIZABLE | SDL_DOUBLEBUF);
glViewport(0, 0, screen_width, screen_height);
glMatrixMode(GL_PROJECTION);
glOrtho(0, screen_width, 0, screen_height, -1, 1);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
}
ciclo principale:.
while (running == true)
{
while(SDL_PollEvent(&event))
{
switch(event.type)
{
case SDL_VIDEORESIZE: ResizeWindow(); break; // resizing called here
case SDL_QUIT: running = false; break;
case SDL_KEYDOWN: square.Handle_Input(down); break;
case SDL_KEYUP: square.Handle_Input(up); break;
}
}
square.Move();
square.Check_Collision();
glClear(GL_COLOR_BUFFER_BIT);
square.Draw();
SDL_GL_SwapBuffers();
}
dovrebbe funzionare tutto perfettamente finché la finestra è ridimensionato.
Ho visto la tua domanda precedente, ma non sono riuscito a mettere in evidenza tutti i problemi in quel momento. Confido che tu non abbia risolto i tuoi problemi precedenti. Probabilmente dovresti pubblicare le modifiche che hai apportato per farlo funzionare come la tua risposta e chiudere la domanda. – batbrat
I miei suggerimenti hanno risolto il problema? – batbrat
Ho dormito da quando ho postato questa domanda, la tua risposta ha senso, specialmente il bit su SDL_SetVideoMode, a guardarlo, mi sembra un errore stupido da parte mia. La prima domanda che ho postato ha avuto un problema che è stato un altro grande errore da parte mia; Stavo lavorando dalla memoria e non ho cercato i parametri glOrtho. Ho avuto come andare da sinistra a destra come 0-0. Proverò ora i tuoi suggerimenti –