Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Juego Relentizado A Pantalla Completa

Iniciado por javiel, 11 de Junio de 2004, 08:22:30 AM

« anterior - próximo »

javiel

 Hola a todos:

Estoy trabajando en un juego bajo SDL y tengo un gran problema. En las opciones del juego tengo una parte donde puedes cambiar a Pantalla Completa. El problema es que el juego cuando está en una ventana funciona perfectamente, pero si lo cambio a pantalla completa, el juego va lentísimo. Es raro pq solo pasa en Windows, en linux el juego funciona perfectamente.

¿sabéis a que puede ser debido?

Por favor cualquier respuesta será bienvenida ya que no se como afrontar el problema

gracias a todos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

sés

 ¿El modo de video es el mismo en ventana que en pantalla completa?
Soy indeciso... ¿o no?

javiel

 Tengo una funcion que me cambia el modo de pantalla completa

void Pantalla::modoScreen () {
   if ( fullscreen == 1 ) {
      screen = SDL_SetVideoMode (screen_w+150, screen_h, screen_bpp, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_ANYFORMAT | SDL_SRCALPHA | SDL_FULLSCREEN);
      fullscreen = 0;
   } else {
      screen = SDL_SetVideoMode (screen_w+150, screen_h, screen_bpp, SDL_HWSURFACE | SDL_ANYFORMAT | SDL_SRCALPHA | SDL_DOUBLEBUF);
      fullscreen = 1;
   }
}

según la variable fullscreen. Lo raro es que funciona en linux y no en windows

No se si es eso lo que me preguntas

gracias
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

TheAzazel

 Haces algun uso de transparencias? pq si lo haces..ya lo tienes!
en modo ventana en windows se hace por software y las transparencias se hacen por soft(son lentas pero en un pc potente van bien) pero cdo saltas a full screen..veo q usas hardware y lamentablemente casi ninguna tarjeta soporta alpha blending en 2d lo cual.... es lento lento como el caballo del malo, se tiene q descargar las superficies de la videoram, la cpu hace la transparencia y volver a subir la superficie...y eso..ni con agpx8 va bien jeje.
la prueba rapida es...no uses hardware cdo saltes a full screen, q sigua usando soft y si no se ralentiza mucho ya has dado con ello.
Por cierto, te sobran bastantes flags, SDL_DOUBLEBUF solo tiene sentido junto con SDL_HWSURFACE y este a su vez, en windows hablo eh? no tiene sentido sin SDL_FULLSCREEN, el SDL_ANYFORMAT kitalo directamente y los SDL_SRALPHA tambien (puede q estos esten forzando a utilizar SDL_SWSURFACE...)
tampoco se pq añades 150 pixels pero weno...algo haras por ahi.
Veo q no tienes mu claro el uso de los flags... echate un ojo por ahi a algun manual pq te puede dar muchos kebraderos de cabeza y en el fondo son 4 cosas :)

Ah, si el problema fuera por eso del alpha...tendras q pensar un poco en lo q kieres conseguir...y asi atacarlo de un modo u otro, pero vamos, si es asi tu pregunta q hay una forma de hacerlo para q vaya rapidito.

pos na, a ver si te sirve de algo :)
un saludo

PD: si kieres ver ejemplos de sdl pasate por mi pagina

javiel

 Cuando hablas de transparencias supongo que hablas del alpha de las imágenes mas que hacer transparencias desde código. Utilzo PNG y todos los dibujos tienen partes transparentes. Tiene que ser por eso entonces?? Me he dado cuenta que cuando meto muchos PNG usando opacidad, el juego se relentiza mucho mucho. Lo que no entiendo es lo del FULLSCREEN ya que en linux va de lujo, pero en Windows nada. Probaré todo lo que me has comentado a ver que puedo sacar de todo esto.

Muchas gracias por todo y ya escribiré los problemas que tenga

saludos
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

TheAzazel

 Sobre linux no te puedo decir nada.... pq no he usado mucho sdl con linux pero...podria ser que los drivers de la tarjeta grafica sobre linux no utilizan hardware y por tanto, esten en ventana o pantalla completa siempre va todo por soft..en cuyo caso las transparencias las realiza la cpu..no estara "acelerado por hardware" pero tampoco "decelerado" como es el caso del windows aunq no es problema de este...si no de los fabricantes...con lo facil q es implementar eso pero weno..las tarjetas 3d comieron mu rapido el terreno a las 2d y se kdaron cosas en el aire...
otra opcion es usar opengl con sdl y asi lo aceleras todo :), echa un vistazo a glSDL puede serte util
un saludo

javiel

 A lo mejor se puede solucionar con el tema de OpenGl. He visto en otro juego, el SuperTux, un juego clon del SuperMarioBros con el pinguino de linux, que tiene una opcion para OpenGl. En un principio no lo comprendí, ya que es un juego en 2D, pero a lo mejor puede ser para algo como esto ¿no?

Puede ser algo de eso?? Voy a mirar glSDL, pero sabes mas o menos como funciona a grandes rasgos?? Meto el flags SDL_OPENGL y ya está?? La liaré???

gracias por todo
uper-Tirititran: el superhéroe gaditano (http://www.super-tirititran.com)

TheAzazel

 con glSDL lo que se busca es eso...q metas el flag de SDL_OPENGL y tirando...pero aun esta en desarrollo y el tio q lo esta haciendo esta investigando formas y mas formas de poder hacerlo... si vas a su pagina vete a la seccion de descarga de varios(dnd sale un listado con todas las cosas para descargar) y bajate no el glsdl 0.6 si no otro q pone la fecha q es de junio..ese esta en pruebas pero añade muchas cosas q son necesarias, alguna vez he hablado con esta persona y su intencion es terminarlo asiq...ojala lo consiga :)

pero...si tu usas opengl para utilizar toda la aceleracion....me temo q tienes q aprender opengl para usarlo... cambia bt pero si no tienes nada hecho hasta ahora...lo podrias hacer... ese jueguecillo q has dicho para linux...si tienes las fuentes veras como la opcion de opengl cambia todo lo q es el sistema grafico.
Si no te kieres liar mucho... yo lo q hago...tengo una libreria(q en los proximos dias pondre para q la use todo el q quiera) dnd todo esta encapsulado y cdo cargas una superficie y activas el alpha automaticamente detecta si utilizas videoram en cuyo caso, esta superficie la fuerza a almacenar en memoria del sistema para al menos, no "desacelerar" el proceso, esto tiene problemas.... a veces una superficie empieza sin tener alpha y luego lo activas... y tal...por eso ya depende de lo q stes buscando hacer.







Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.