[SDL] Small Blit program won't run unless breakpointset(Mac/XCode)

Michael Ryan Bannon ryan.bannon at humagade.com
Mon Jul 3 12:46:39 PDT 2006


Nevermind...just figured it out...have to fill the display surface with a 
black rectangle (or some other color).

Thanks,

Ryan

"Michael Ryan Bannon" <ryan.bannon at humagade.com> wrote in message 
news:e8bp1d$j6g$1 at sea.gmane.org...
> Hey,
>
> Thanks for the response.
>
> First, I'm trying to recreate some code from the engine I'm porting to 
> Mac, so that's why I read the file into memory (that's what they were 
> doing originally, so I just kept with it).  Also, I don't know SDL or 
> SDL_Image that well, so I missed that part.
>
> Regarding portability, I'm not really worrying about that right now.  I've 
> got bigger problems :)
>
> As for explaining how I expect it to work, I guess I can't considering 
> that it's not working.  Again, I don't know SDL that well.  What I thought 
> would happen is to blit the picture surface onto the display surface every 
> iteration.  And at every iteration the alpha would increase until it's 
> reset to 0.  What actually is happening is that it goes up to 255 but 
> doesn't reset itself.
>
> I assumed that the blit cleared the display when I called it, but I guess 
> not.  What should I be doing differently?  It should start as black, fade 
> into full alpha, then start again.  So, how exactly should I be clearing 
> the blit?
>
> Thanks,
>
> Ryan
>
> "Christian Walther" <cwalther at gmx.ch> wrote in message 
> news:e8bnrg$f6b$1 at sea.gmane.org...
>> Michael Ryan Bannon wrote:
>>>> But, naturally, I can't get the code sample to work.
>>
>> I didn't try your code, but a few comments anyway:
>>
>> - Why are you reading the file into memory before decoding it with
>> SDL_image, when you could just have SDL_image read the file itself? (And
>> using this complicated Carbon code at that, when simple stdio would do
>> the job?)
>>
>>>> #include <SDL/SDL.h>
>>>> #include <SDL_image/SDL_image.h>
>>
>> Although I guess it doesn't matter for this sample code, I'd like to
>> point out that this isn't portable. SDL.h happens to be in an "SDL"
>> directory on Linux (and I guess other Unixes), so that would work, but
>> SDL_image.h probably isn't in an "SDL_image" directory (or framework)
>> anywhere but on Mac OS X. The portable way is to #include "SDL.h" and
>> tell the compiler where it is in the platform-specific build system
>> (e.g. on Mac OS X add "/Library/Frameworks/SDL.framework/Headers" to the
>> "Header Search Paths" setting in Xcode, or specify
>> "-I/Library/Frameworks/SDL.framework/Headers" on the command line). The
>> same for SDL_image.h.
>>
>>> the alpha calls that I'm doing still don't seem to be working.
>> ...
>>>>    // Display
>>>>    int alpha = 0;
>>>>    while(true)
>>>>    {
>>>>        alpha += 10;
>>>>        if(alpha > 255)
>>>>        {
>>>>            alpha = 0;
>>>>        }
>>>>        pSurfaceOne->format->Amask = 0;
>>>>        SDL_SetAlpha(pSurfaceOne, SDL_SRCALPHA, alpha);
>>>>        SDL_BlitSurface(pSurfaceOne, NULL, pDisplaySurface, NULL);
>>>>    }
>>
>> Care to explain how you expect it to work (after you add the missing
>> SDL_UpdateRect)? I expect this code to blit the same image onto itself
>> repeatedly in very fast succession (with varying alpha values), so
>> except for the first split second you won't see anything but this image.
>> Perhaps you meant to clear the display surface between blits, but even
>> then you'll probably only get flicker unless you add some SDL_Delay to
>> the loop.
>>
>> Hope this helps
>>
>>  -Christian 







More information about the SDL mailing list