2013-04-16 4 views
0

Я делаю эту игру с использованием SDL, и мне нужно иметь возможность отображать текст для переменных и информации и т. Д. Проблема заключается в том, что я не могу отобразить текст, в то время как SDL_OPENGL является параметром в SDL_SetVideoMode().Рисование текста с помощью SDL_ttf при использовании другой графики

Он работает отлично, но я не могу отобразить любую графику. Очевидно, мне нужны оба, и я предпочитаю не рисовать изображения для текста.

TL; DR мне нужно нарисовать текст без удаления SDL_OPENGL из SDL_SetVideoMode (SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_SWSURFACE | SDL_OPENGL);

Я использую C++ и code :: blocks, если это поможет. Нужна любая другая информация?

ответ

0

Итак, после небольшой работы я выяснил, как ее исправить самостоятельно, я просто преобразил поверхности, как я сделал с моими обычными картинками. вот функция, которую я использовал, если кто-то другой заинтересован или имеет аналогичную проблему.

GLuint importText(const std::string &text,int font_size,const __int8 red,const __int8 green,const __int8 blue){ 
SDL_Color font_color = {blue,green,red}; 
TTF_Font* font=TTF_OpenFont("Font.ttf",font_size); 
SDL_Surface *image = TTF_RenderText_Blended(font,text.c_str(),font_color); 
SDL_DisplayFormatAlpha(image); 
unsigned object(0); 
glGenTextures(1,&object); 
glBindTexture(GL_TEXTURE_2D, object); 
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE); 
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE); 
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA,image->w,image->h,0,GL_RGBA,GL_UNSIGNED_BYTE,image->pixels); 
texture_height=image->h; texture_width=image->w; 
SDL_FreeSurface(image); 
TTF_CloseFont(font); 
return object;} 

 Смежные вопросы

  • Нет связанных вопросов^_^