SDL
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
When running from within Visual Studio, alongside your source files. If you run your .exe independently, along with the .exe.
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.
And there ya go.
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.
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.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement