【问题标题】:Drawing text with SDL_ttf while using other graphics [duplicate]在使用其他图形时使用 SDL_ttf 绘制文本 [重复]
【发布时间】:2013-04-16 17:39:03
【问题描述】:

我正在使用 SDL 制作这个游戏,我需要能够为变量和信息等显示文本。问题是我无法渲染任何文本,而 SDL_OPENGL 是 SDL_SetVideoMode()。

没有它也能完美运行,但我无法渲染任何图形。 显然我两者都需要,而且我宁愿不为文本绘制图像。

TL;DR 我需要在不删除 SDL_OPENGL 的情况下绘制文本 SDL_SetVideoMode(SCREEN_WIDTH,SCREEN_HEIGHT,32,SDL_SWSURFACE | SDL_OPENGL);

如果有帮助,我正在使用 C++ 和 code::blocks。还需要其他信息吗?

【问题讨论】:

    标签: c++ sdl codeblocks sdl-ttf sdl-image


    【解决方案1】:

    所以经过一些工作后,我想出了如何自行修复它,我只是像处理常规图片一样转换了表面。如果其他人有兴趣或有类似问题,这是我使用的功能。

    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;}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 2022-01-07
      相关资源
      最近更新 更多