Pregunta

Estoy empezando un poco de estrategia en tiempo real juego con SDL y aquí están algunas preguntas:

  • Yo trabajo con pequeños sprites, es hay una manera de mostrar la pantalla x2 con líneas de exploración ?Traté de hacer zoom con rotozoom, pero se ralentiza el juego y me gustaría evitar el escalado de mis sprites con la mano.
  • ¿Cómo puedo cambiar entre pantalla completa y ventana mientras de la ejecución ?He encontrado el SDL_WM_ToggleFullScreen la función, pero no parece funcionar en Windows según SDL doc.
  • Con el fin de poner mi propio cursor me carga un sprite con mi puntero y hacer que siga al ratón.Pero me gustaría también como para reducir la velocidad de los fotogramas con SDL_Delay y si lo hace, el movimientos del puntero no es suave.La SDL cursor no parecía influenciado por la aplicación de la tasa de fotogramas es una la mejor solución para usarlo y si es así, hay una forma de usar una imagen en lugar de una extraña máscara ?
  • Existe una mejor manera de limitar el framerate ?
  • ¿Cómo puedo tinte de una superficie (como con draw_lit_sprite en Allegro)
¿Fue útil?

Solución

Tamaño Sprite - para cualquier tipo de escalado en tiempo real o rotación que mejor está fuera con OpenGL en lugar de un blitter software como SDL. Otras bibliotecas como SFML terminar con esto para usted.

Pantalla Completa / de ventana -. La respuesta de Zack ve bien lo suficiente, simplemente llame SDL_SetVideoMode nuevo

El movimiento del cursor - Por lo general, el sistema operativo hace que el ratón por separado de la aplicación subyacente para que se mantenga sensible. Si usted está haciendo que el cursor del ratón de ti mismo, entonces su único recurso es hacer que el juego sea más rápido. No creo que se obtiene mucha opción sobre el cursor en sí, aunque (posiblemente debido a los requisitos de plataforma cruzada).

velocidad de fotogramas -. Desacoplamiento muchos sugieren movimiento en el juego y la física de su tasa de fotogramas (por ejemplo, véase ' fijar su Timestep '). Además, tenga en cuenta que SDL_Delay impone un límite inferior en el tiempo de espera, no un límite superior.

Teñido una superficie -. De nuevo, esto se realiza mejor mediante OpenGL desde SDL no soporta esta directamente

Otros consejos

  

¿Cómo puedo cambiar entre pantalla completa y ventana mientras se ejecuta? He encontrado la función SDL_WM_ToggleFullScreen pero no parece funcionar en Windows según la doc SDL.

Sí, la documentación indica que la función draw_lit_sprite actualmente sólo funciona para X.

La manera de hacerlo es así:

void SdlGraphics::setupScreenSurface() {
    Uint32 flags = 0;
    flags |= SDL_HWSURFACE;
    flags |= SDL_DOUBLEBUF;

    if(isFullScreen) {
        flags |= SDL_FULLSCREEN;
    }

    screenSurface = boost::shared_ptr<SDL_Surface>( 
        SDL_SetVideoMode(width, height, depth, flags), 
        utility::NullDeleter() 
    );
}

void SdlGraphics::setFullScreen(bool fullScreen) {
    if(isFullScreen != fullScreen) {
        isFullScreen = fullScreen;
        setupScreenSurface();
    }
}

En estos puntos:

  
      
  • Yo trabajo con pequeños sprites, hay una   modo de visualización de la pantalla con x2   líneas de exploración? He intentado con el zoom   rotozoom pero ralentiza el juego   y me gustaría evitar escalar mi   sprites a mano.

  •   
  • ¿Cómo puedo Tinte una superficie (como con rotozoom en Allegro)

  •   

Me casi recomienda utilizar el modo OpenGL con SDL. Se le dará la libertad acelerado por hardware de hacer este tipo de cosas. <=> se hace con el software (que yo sepa) y es por eso que es tan lento. Siempre será lenta.

Una otra opción que pueda tener con el dibujo de los sprites a 2x es dibujar todo para una textura tamaño 1x, y después de todo lo que se dibuja, la escala que la textura 2x. Entonces sólo está procesando una sola superficie en lugar de muchos pequeños una y otra vez por cuadro.

En cuanto a la cuestión del cursor, parece que usted puede querer ser dibujo como más rápido posible, pero sólo la actualización de su juego a una velocidad constante . De esa manera usted tendrá un desplazamiento suave pero el juego no va a salir de control.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top