[SDL] SDL 1.3 and SDL_ttf

Alex Barry alex.barry at gmail.com
Sun Jul 18 19:32:34 PDT 2010


A lot of tinkering later, and I go into the source of SDL_ttf, and see that
the surface pixel format is a palette.  Long story short, I fixed my
function, and now it looks like this:

void printxy( char *text, int x, int y, Uint8 r, Uint8 g, Uint8 b ) {
    if( !font ) { printf( "No font to print!\n" ); return; }    // Can't
print without font
    if( !text ) { printf( "No text to print!\n" ); return; }    // Can't
print without text
    SDL_Color c;
    SDL_Rect rt;
    c.r = r; c.g = g; c.b = b;

    SDL_Surface *surface = TTF_RenderText_Solid( font, (const char *)text, c
);
    if( surface == NULL ) {
        printf( "Couldn't even make the surface!  WTF: %s\n", TTF_GetError()
);
    }
    SDL_Surface *recast = SDL_CreateRGBSurface( 0, surface->w, surface->h,
24, 0, 0, 0, 0 ); // <--- This is the fix!
    SDL_BlitSurface( surface, NULL, recast, NULL ); // <-- Blit Surface will
automatically convert the original 8-bit image to a 24 bit image.

    SDL_Texture *texture = SDL_CreateTextureFromSurface( 0, recast );
    if( texture == NULL ) {
        printf( "Couldn't even make the texture!  WTF: %s\n", TTF_GetError()
);
    }
    rt.x = x; rt.y = y; rt.w = surface->w; rt.h = surface->h;
    SDL_SetRenderDrawBlendMode( SDL_BLENDMODE_NONE );
    SDL_RenderCopy( texture, NULL, (const SDL_Rect *)&rt );
    SDL_DestroyTexture( texture );
    SDL_FreeSurface( recast );
    SDL_FreeSurface( surface );

}

I hope that helps someone,
-Alex

On Sun, Jul 18, 2010 at 10:19 PM, Alex Barry <alex.barry at gmail.com> wrote:

> Just for fun, I've kept at this, and did some sanity checks - looks like
> the surface isn't being converted properly to a texture, with this error:
> "Compatible pixel format cannot be found"
> Have I gone completely insane?
>
>
> On Sun, Jul 18, 2010 at 9:58 PM, Alex Barry <alex.barry at gmail.com> wrote:
>
>> I did a lot of googling, and it appears as though SDL_ttf, in it's current
>> state, does not work with SDL 1.3?  Can anyone confirm?
>>
>>
>> On Sun, Jul 18, 2010 at 5:49 PM, Alex Barry <alex.barry at gmail.com> wrote:
>>
>>> Nothing that simple - I have SDL_RenderPresent(); later in the code (i
>>> presume you meant that....SDL_RenderUpdate() doesn't seem to exist)
>>> I have other things being displayed without issue
>>>
>>> -Alex
>>>
>>> On Sun, Jul 18, 2010 at 5:32 PM, Nathaniel J Fries <nfries88 at yahoo.com>wrote:
>>>
>>>>  SDL_RenderUpdate();?
>>>>
>>>>
>>>> ------------------------------
>>>>
>>>> EM3 Nathaniel Fries, U.S. Navy
>>>>
>>>> http://natefries.net/
>>>>
>>>> _______________________________________________
>>>> SDL mailing list
>>>> SDL at lists.libsdl.org
>>>> http://lists.libsdl.org/listinfo.cgi/sdl-libsdl.org
>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.libsdl.org/pipermail/sdl-libsdl.org/attachments/20100718/1cf38a22/attachment-0008.htm>


More information about the SDL mailing list