SDL

Started by
7 comments, last by cj270608 15 years, 5 months ago
Question: I'm using this tutorial to learn SDL. Where do I put my example images? http://www.lazyfoo.net/SDL_tutorials/lesson02/index.php
Advertisement
When running from within Visual Studio, alongside your source files. If you run your .exe independently, along with the .exe.
And where are these source files?
Go to My Documents. Go inside the Visual Studio folder. Go to Projects. Go to a folder with the name of your VS solution. Go to the folder with the name of the VS project.

And there ya go.
I put my pictures in the Debug folder. Good or bad?
To help you out, here's my source.

#include "SDL/SDL.h"#include <string> //The attributes of the screenconst int SCREEN_WIDTH = 640;const int SCREEN_HEIGHT = 480;const int SCREEN_BPP = 32;//The surfaces that will be usedSDL_Surface *message = NULL;SDL_Surface *background = NULL; SDL_Surface *screen = NULL; SDL_Surface *load_image( std::string filename ){	//Temporary storage for the image that's loaded	SDL_Surface* loadedImage = NULL;		//The optimized image that will be used	SDL_Surface* optimizedImage = NULL; 	//Load the image	loadedImage = SDL_LoadBMP( filename.c_str() ); 	//If nothing went wrong in loading the image	if( loadedImage != NULL )	{		//Create an optimized image		optimizedImage = SDL_DisplayFormat( loadedImage );				//Free the old image		SDL_FreeSurface( loadedImage );	} 	//Return the optimized image	return optimizedImage;} void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ){	//Make a temporary rectangle to hold the offsets	SDL_Rect offset;		//Give the offsets to the rectangle	offset.x = x;	offset.y = y; 	//Blit the surface	SDL_BlitSurface( source, NULL, destination, &offset );} int main( int argc, char* args[] ){	//Initialize all SDL subsystems 	if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )	{		return 1;	} 	//Set up the screen	screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );	//If there was an error in setting up the screen	if( screen == NULL )	{		return 1;	} 	//Set the window caption	SDL_WM_SetCaption( "Hello World", NULL ); 	//Load the images	message = load_image( "hello_world.bmp" );	background = load_image( "background.bmp" ); 	//Apply the background to the screen	apply_surface( 0, 0, background, screen ); 	//Apply the message to the screen	apply_surface( 180, 140, message, screen );	//Update the screen	if( SDL_Flip( screen ) == -1 )	{		return 1;	} 	//Wait 2 seconds	SDL_Delay( 2000 ); 		//Quit SDL	SDL_Quit(); 		//Free the surfaces	SDL_FreeSurface( message );	SDL_FreeSurface( background );	//Quit SDL	SDL_Quit();	//Return	return 0;} 
You put them inside the folder with the project's name, in other words, the same folder main.cpp is in.
As a startup it doesn't differ where you put your image files. If it works, that's okey then. But when you start to make bigger projects, its a good idea to put all data files in a seperate folder. If you keep source files and data files all together, it will be very messy soon. Even you seperate some source files into different folders.

For example.

src
|---- main.cpp
engine
|------ engine.cpp
|------ engine.h


data
gfx
|----- man.bmp
|----- car.bmp
sfx
|----- bum.wav
|----- disco.wav


"src" is folder is for your source files. And "data" is for your data files. When using, you can type in your code: load_image( "data/gfx/man.bmp" );

This is also something related with the project options of your editor. You can set your source folder or output folder. If you are using Visual Studio get familiar with what is Debug mode, Relase mode. It makes several folders for these.

Currently you can just put your image next to your main.cpp (or next to your source files). But it is not a good behaviour in the long run.
Let me say one thing...

HELLO WORLD!

And hello SDL.

Thanks!

This topic is closed to new replies.

Advertisement