Bueno, he vuelto al campo de la programación, después de haberme pasado mucho tiempo jugando a LineageII.Y he vuelto nada mas y nada menos que aprendiendo C++, y estaba empezando a crear un juego en SDL. Y me surgió la siguiente duda..
Primero antes que nada, tengo este código que he realizado:
#include "SDL/SDL.h"
void mostrar( int x, int y, SDL_Surface* source, SDL_Surface* destination )
{
SDL_Rect offset;
offset.x = x;
offset.y = y;
SDL_BlitSurface( source, NULL, destination, &offset );
}
void generar_mapa(int x, int y)
{
int i, u;
SDL_Surface* tileset = NULL;
SDL_Surface* pantalla = NULL;
SDL_Surface* buffer = NULL;
pantalla = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
buffer = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
tileset = SDL_LoadBMP("tileset.bmp");
for (i = 0; i < y; i++)
{
for (u = 0; u < x; u++)
{
mostrar(u*32, i*32, tileset, buffer);
}
}
SDL_Flip(buffer);
mostrar(0, 0, buffer, pantalla);
SDL_Flip(pantalla);
SDL_FreeSurface(tileset);
}
int main(int argc, char* args[])
{
SDL_WM_SetCaption("Swat2D", NULL);
SDL_Init( SDL_INIT_EVERYTHING );
generar_mapa(10,10);
SDL_Delay(5000);
SDL_Quit();
}
El problema es esto:
SDL_Surface* tileset = NULL;
SDL_Surface* pantalla = NULL;
SDL_Surface* buffer = NULL;
pantalla = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
buffer = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
Que está dentro del void de "generar_mapa", y yo quiero usarlo en otro void llamado "refrescar", en resumen, quiero hacer los surfaces tileset, pantalla y buffer globales para que los pueda usa ren otros lados, ¿hay forma de hacerlo?.
Saludos y gracias de antemano.