Jump to content

[Resolvido] PNG images SDL


polska
 Share

Recommended Posts

Estava a rever os tuts de SDL do foo e após fazer o programa de abrir imagens de diferentes formatos(PNG) , ele não funcionou..

Eu revi o código e ele esta todo direitinho, tanto as funções como o main, o que se passa é quando chega a parte de chamar a função load_image , ele chama mas não conssegue abrir as imagens, e a Surface fica com NULL e o programa termina...

COD:

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

const int SCREEN_WIDTH = 640;
const int SCREEN_HIGHT = 480;
const int SCREEN_BPP = 32;

SDL_Surface *screen=NULL;
SDL_Surface *bruno=NULL;
SDL_Surface *background=NULL;


SDL_Surface *Load_Image( std::string filename )
{
SDL_Surface *loadedImage=NULL;
SDL_Surface *optimizedImage=NULL;
loadedImage=IMG_Load( filename.c_str() );

if(loadedImage != NULL)
{
 optimizedImage=SDL_DisplayFormat( loadedImage );
 SDL_FreeSurface( loadedImage );
}
return optimizedImage;
}


void apply_surface( int x, int y, SDL_Surface *source, SDL_Surface *destination )
{
SDL_Rect offset;
offset.x=x;
offset.y=y;
SDL_BlitSurface( source, NULL, screen, &offset );
}


bool Init()
{
if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
 return false;
screen=SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HIGHT, SCREEN_BPP, SDL_SWSURFACE );
if( screen == NULL )
 return false;
SDL_WM_SetCaption( "Optimized images Test", NULL );
return true;
}


void clean()
{
SDL_FreeSurface( background );
SDL_FreeSurface( bruno );
SDL_Quit();
}


int main( int argc, char* args[] )
{

if( Init() == false )
 return 1;

background=Load_Image( "background.png" );
bruno=Load_Image( "bruno.png" );

if( background == NULL || bruno == NULL )
 return 1;

apply_surface( 0, 0, background, screen );
apply_surface( 320, 0, background, screen );
apply_surface( 0, 240, background, screen );
apply_surface( 320, 240, background, screen );

apply_surface( (SCREEN_WIDTH-280)/2, (SCREEN_HIGHT-200)/2, bruno, screen );

if( SDL_Flip( screen ) == -1 )
 return 1;

SDL_Delay( 10000 );

clean();

return 0;
}

Alguém me consegue ajudar?

Ps: As imagens estão no directório do programa, como deviam estar.

Edited by polska

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Link to comment
Share on other sites

o SDL recorre a duas bibliotecas para abrir e ler os ficheiros PNG : zlib e libpng

estas duas bibliotecas devem estar acessíveis à aplicação no momento de execução

Ah pois foi, eu retirei os DLL da pasta, só deixei aqueles que incluimos no linker... Mas se não funciona.. xD

Já esta a funcionar o prog, obrigado ;D

Corrige um sábio e ele mais sábio ficará. Corrige um ignorante e um inimigo ganharás.

Link to comment
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
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.