sobota, 26 listopada 2011

O Królu Memory Leaku i headshotach kilku



Nie ma postów, nie ma. Jest Skyrim i Battlefield 3, które pochłonęły mnie bez reszty :) Wszystko się posypało straciłem prawie wszystkie kody źródłowe aplikacji, jedyny jaki mam to Miner. Niestety zabawę w programowanie zatrzymał błąd, który póki co jest nie do przeskoczenia.


 void renderText(const TTF_Font *Font, const GLubyte& R, const GLubyte& G, const GLubyte& B, const double& X, const double& Y, const double& Z, const std::string& Text)  
 {  
      SDL_Color Color = {R, G, B};  
      SDL_Surface *Message = TTF_RenderText_Blended(const_cast<TTF_Font*>(Font), Text.c_str(), Color);  
      unsigned Texture = 0;  
      glGenTextures(1, &Texture);  
      glBindTexture(GL_TEXTURE_2D, Texture);  
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);  
      glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);  
      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, Message->w, Message->h, 0, GL_BGRA, GL_UNSIGNED_BYTE, Message->pixels);  
      glBegin(GL_QUADS);  
           glTexCoord2d(0, 0); glVertex3d(X, Y, Z);  
           glTexCoord2d(1, 0); glVertex3d(X+Message->w, Y, Z);  
           glTexCoord2d(1, 1); glVertex3d(X+Message->w, Y+Message->h, Z);  
           glTexCoord2d(0, 1); glVertex3d(X, Y+Message->h, Z);  
      glEnd();  
      glDeleteTextures(1, &Texture);  
      SDL_FreeSurface(Message);  
 }  

Gdzieś w tej funkcji jest błąd, ponieważ przy renderowaniu tekstu na ekranie aplikacja rezerwuje coraz większą ilość pamięci ram. Chyba czas zacząć pisać coś nowego, kiedyś pewnie powrócę do tego projektu jak znajdę kogoś znającego OpengGLa. :)

1 komentarz:

  1. Bierz się za robotę i rób Minera bo chętnie bym pograł. Lubię takie gry :D

    OdpowiedzUsuń