error practico1

error practico1

de Usuario eliminado -
Número de respuestas: 2
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;
}
En respuesta a Usuario eliminado

Re: error practico1

de Rossana Guerra Celano -
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