C++ 使用其他图形时使用SDL_ttf绘制文本

C++ 使用其他图形时使用SDL_ttf绘制文本,c++,sdl,codeblocks,sdl-ttf,sdl-image,C++,Sdl,Codeblocks,Sdl Ttf,Sdl Image,我使用SDL制作这个游戏,我需要能够显示变量和信息等的文本。问题是,当SDL_OPENGL是一个参数时,我无法渲染任何文本 SDL_SetVideoMode() 它完美地工作没有,但我不能渲染我的任何图形。 很明显,我需要两者,而不是为文本绘制图像 TL;DR我需要在不删除SDL_OPENGL的情况下绘制文本 SDL_设置视频模式(屏幕宽度,屏幕高度,32,SDL_表面| SDL_OPENGL) 我使用C++和代码::如果有帮助的话。需要其他信息吗?因此,在做了一点工作后,我自己找到了修复方法,

我使用SDL制作这个游戏,我需要能够显示变量和信息等的文本。问题是,当SDL_OPENGL是一个参数时,我无法渲染任何文本 SDL_SetVideoMode()

它完美地工作没有,但我不能渲染我的任何图形。 很明显,我需要两者,而不是为文本绘制图像

TL;DR我需要在不删除SDL_OPENGL的情况下绘制文本 SDL_设置视频模式(屏幕宽度,屏幕高度,32,SDL_表面| SDL_OPENGL)


我使用C++和代码::如果有帮助的话。需要其他信息吗?

因此,在做了一点工作后,我自己找到了修复方法,我只是像处理常规图片一样对曲面进行了转换。这是我在其他人感兴趣或有类似问题时使用的函数

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