Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z wyswietleniem tekstu [SDL_ttf]

Ostatnio zmodyfikowano 2010-11-26 18:55
Autor Wiadomość
Savail
Temat założony przez niniejszego użytkownika
Problem z wyswietleniem tekstu [SDL_ttf]
» 2010-11-26 16:07:28
Witam
Uzywam Opengl i sdl i za pomoca sdl_ttf chcialbym wyswietlac tekst.... Niestety nie mam pojecia co robie zle i juz od kilku godzin sie nad tym zastanawiam ;/
To jest funkcja rysujaca tekst:
C/C++
void ClassProgram::LoadFont( std::string font_name, int font_size, std::string text, int pos_x, int pos_y, int r, int g, int b ) {
    if( TTF_Init() == - 1 ) exit( 0 );
   
    SDL_Surface * message = NULL;
    TTF_Font * font = NULL;
    SDL_Color fontcolor = { r, g, b };
   
    font = TTF_OpenFont( font_name.c_str(), font_size );
    if( font == NULL ) exit( 0 );
   
    message = TTF_RenderText_Solid( font, text.c_str(), fontcolor );
   
    SDL_Rect offset;
    offset.x = pos_x;
    offset.y = pos_y;
    SDL_BlitSurface( message, NULL, Screen, & offset );
   
    SDL_FreeSurface( message );
    TTF_CloseFont( font );
    TTF_Quit();
}
Tutaj jest funkcja wyswietlajaca caly interfejs:
C/C++
void ClassProgram::Draw( std::string game_mode ) {
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    if( game_mode == "menu" ) object2.kursor_menu( kursor_x, kursor_y );
   
    if( game_mode == "pre_campaign" ) object2.pre_campaign();
   
    LoadFont( "arial.ttf", 28, "hfgdhghdgsdfsdhgfsdhgfhgsdfO", 200, 200, 255, 255, 255 );
    SDL_Flip( Screen );
    SDL_GL_SwapBuffers();
}
Grafika sie wyswietla ale tekst juz nie ;/. Jest 1 roznica pomiedzy wyswietlaniem tekstu a grafiki w moim kodzie: grafike nakladam na quady a tekst wyswietlam przez SDL_BlitSurface... Moze stad wynikaja te problemy, nie wiem;/
Bylbym ogromnie wdzieczny za pomoc! Jesli potrzeba wiecej szczegolow to powiedzcie

EDIT:: W czystym SDLu tekst sie wyswietla bo sprawdzalem, trzeba uzyc tylko SDL_Flip() a tutaj po wyswitleniu uzywam
SDL_Flip(Screen);
SDL_GL_SwapBuffers();
i nie wiem czy to sie "nie gryzie" ;/
P-24521
F90M
» 2010-11-26 18:55:01
W czystym SDLu tekst sie wyswietla bo sprawdzalem
W czystym SDLu nie ma funkcji odpowiedzialnych za wyświetlanie tekstu.

W tym kodzie jedyny błąd jaki widzę to, że zmienne r,g,b są typu int, powinny być Uint8. Funkcja LoadFont() działa dobrze, a
SDL_Flip( Screen ); SDL_GL_SwapBuffers();
 się nie "gryzie".
P-24523
« 1 »
  Strona 1 z 1