Sign in to follow this  


Recommended Posts

Question: I'm using this tutorial to learn SDL. Where do I put my example images?

Share this post

Link to post
Share on other sites
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.

Share this post

Link to post
Share on other sites
To help you out, here's my source.

#include "SDL/SDL.h"
#include <string>

//The attributes of the screen
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
//The surfaces that will be used
SDL_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
//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

//Free the surfaces
SDL_FreeSurface( message );
SDL_FreeSurface( background );
//Quit SDL
return 0;

Share this post

Link to post
Share on other sites
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.

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

|----- man.bmp
|----- car.bmp
|----- 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.

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this