tengo esto, porque la ventana se "cuelga" ? o sea se abre, no se pone de ningun color sino que queda con la imagen de fondo, y si la quiero mover o hago algo me pone no responde. O sea si en el while no hago nada no deberia quedar ahi y listo, que me esta faltando? gracias
int main(int argc, char *argv[])
{
SDL_Surface * pantalla;
if( SDL_Init( SDL_INIT_VIDEO < 0 )) {
printf("No se pudo inicializar SDL: %s\n", SDL_GetError());
exit(1);
}
pantalla = SDL_SetVideoMode(640, 480, 32, SDL_OPENGL | SDL_HWSURFACE );
if( pantalla == NULL ) {
printf("No se puede establecer el modo de video 640x480: %s\n", SDL_GetError());
exit(1);
}
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_WM_SetCaption( "emptySDL", NULL );
glClearColor( 0.3, 0.3, 0.3,0);
bool AplicacionFinalizada = false;
SDL_Event evento;
while ( ! AplicacionFinalizada )
{
};
SDL_Quit();
return 0;
}
Si usás SDL_HWSURFACE, te conviene activar el doble buffer.
SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL
De todos modos no entiendo donde vaciás el buffer de eventos. Tu aplicación espera por una interacción y una consecuencia a eso.
Tenés que determinar qué evento de E/S hay en el pool de eventos para procesarlo, al menos la tecla de salida de tu aplicación.
Tampoco veo como actualizás pantalla.
Dentro de tu loop principal debería haber algo como:
while(SDL_PollEvent(&evento))
{
if evento.type ==
// bla bla
}
y hay un loop vacío.
En tu loop principal deberías limpiar el buffer de color especificado con glCLearColor: glClear(GL_COLOR_BUFFER_BIT)
Y te falta actualizar la pantalla (swap de los buffers de trabajo con el de pantalla) SDL_GL_SwapBuffers().
espero te ayude, saludos
SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL
De todos modos no entiendo donde vaciás el buffer de eventos. Tu aplicación espera por una interacción y una consecuencia a eso.
Tenés que determinar qué evento de E/S hay en el pool de eventos para procesarlo, al menos la tecla de salida de tu aplicación.
Tampoco veo como actualizás pantalla.
Dentro de tu loop principal debería haber algo como:
while(SDL_PollEvent(&evento))
{
if evento.type ==
// bla bla
}
y hay un loop vacío.
En tu loop principal deberías limpiar el buffer de color especificado con glCLearColor: glClear(GL_COLOR_BUFFER_BIT)
Y te falta actualizar la pantalla (swap de los buffers de trabajo con el de pantalla) SDL_GL_SwapBuffers().
espero te ayude, saludos
Si de mucha ayuda ! una buena guia y pude solucionar el problema
gracias
gracias