0

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

没有它可以完美地工作,但我无法渲染我的任何图形。显然我需要两者,我宁愿不去为文本绘制图像。

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

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

4

1 回答 1

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;}
于 2013-04-22T16:58:58.970 回答