Hej
Oto kod generujacy i wyswietlajacy czcionke:
int Laduj::Nextpoweroftwo(int x){
double logbase2 = log(x) / log(2);
return (pow(2,ceil(logbase2)));
}
void Laduj::LoadFont(std::string font_name, int font_size, std::string text, int pos_x, int pos_y,
Uint8 r, Uint8 g, Uint8 b){
int w, h;
TTF_Init();
SDL_Surface *message = NULL;
SDL_Surface *background = NULL;
TTF_Font *font = NULL;
GLuint texture2;
SDL_Color fontcolor = {r, g, b};
font = TTF_OpenFont(font_name.c_str(), font_size);
message = TTF_RenderText_Blended(font, text.c_str(), fontcolor);
w = Nextpoweroftwo(message->w);
h = Nextpoweroftwo(message->h);
background = SDL_CreateRGBSurface(0, w, h, 32,
0, 0, 0, 0);
SDL_BlitSurface(message, 0, background, 0);
glGenTextures(1, &texture2);
glBindTexture(GL_TEXTURE_2D, texture2);
glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_RGBA,
GL_UNSIGNED_BYTE, background->pixels );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glBindTexture(GL_TEXTURE_2D, texture2);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 1.0f); glVertex2f(pos_x , pos_y+h);
glTexCoord2f(1.0f, 1.0f); glVertex2f(pos_x + w, pos_y+h);
glTexCoord2f(1.0f, 0.0f); glVertex2f(pos_x + w, pos_y);
glTexCoord2f(0.0f, 0.0f); glVertex2f(pos_x , pos_y);
glEnd();
glFinish();
SDL_FreeSurface(message);
SDL_FreeSurface(background);
TTF_CloseFont(font);
TTF_Quit();
}
Problem polega na tym ze podczas pracy programu gdy wyswietlana jest czcionka w ten sposob, Pamiec zadeklarowana ciagle wzrasta a praca procesora siega 90% ;p. Jak poprawić ten kod aby byl wydajniejszy?;p Bede ogromnie wdzieczny za pomoc