2016-12-02 7 views
1

im в настоящее время сталкивается с странной ошибкой с текстом рендеринга с использованием SDL_TTF и OpenGL.Ошибка TTF_RenderText_Solid

Дело в том, что, когда я использую TTF_RenderText_Blended, все тексты отображаются хорошо и без каких-либо проблем

Rendering text with TTF_RenderText_Blended

Но когда я хочу перейти к TTF_RenderText_Solid «глючит» черный прямоугольники отображаются, и я не знаю, укажите ли его проблему с SDL_TTF или в OpenGL при создании правильной текстуры с поверхности TTF_RenderText_Solid

Функции для загрузки поверхности от TextInfo (шрифт, размер)

void TextSprite::loadSprite(const std::string& text, textInfo* info){ 
SDL_Surface* tmpSurface = nullptr; 

tmpSurface = TTF_RenderText_Solid(info->font,text.c_str(), *_color); 
if (tmpSurface==nullptr){ 
    ErrorManager::systemError("Cannot make a text texture"); 
} 
createTexture(tmpSurface); 

}

Функции для создания текстуры OpenGL от SDL_Surface

void TextSprite::createTexture(SDL_Surface* surface){ 
glGenTextures(1,&_textureID); 
glBindTexture(GL_TEXTURE_2D,_textureID); 

int Mode = GL_RGB; 
if (surface->format->BytesPerPixel==4){ 
    Mode = GL_RGBA; 
} 
glTexImage2D(GL_TEXTURE_2D,0,Mode,surface->w,surface->h,0,Mode,GL_UNSIGNED_BYTE,surface->pixels); 

//Wrapping 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); 

//Filtering 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_NEAREST); 

glBindTexture(GL_TEXTURE_2D,0); 
_rect.w = surface->w; 
_rect.h = surface->h; 

SDL_FreeSurface(surface); 

}

Спасибо за помощь ,

ответ