Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Powtarzanie textury FreeGLut [Open GL]

Ostatnio zmodyfikowano 2013-05-12 16:12
Autor Wiadomość
Menos
Temat założony przez niniejszego użytkownika
Powtarzanie textury FreeGLut [Open GL]
» 2013-05-12 12:35:39
Witam mam problem z texturowaniem w Open Gl.Mam problem z "zjadaniem " RAM-u. Aplikacja ciagle zabiera mi coraz wiecej RAm-u ale nie wiem dla czego.... Oczywiscie Powodem sa textury ale nie wiem co robie nie tak... Uzywam FreeGlut


C/C++
void tekstury()
{
   
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
    glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
   
    _textureId3 = LoadTexture( "trawa.bmp" );
   
    glEnable( GL_TEXTURE_2D );
   
   
    switch( filtr_koloru )
    {
    case 0: glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL ); break; //piksele tekstury zastepuja piksele na ekranie
       
    case 1: glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); break; //piksele tekstury s¹ mnozone przez piksele ekranu
       
    case 2: glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND ); //to co wyzej + do³aczenie sta³ego koloru
        float c[ 4 ] = { 0.12351, 0.2223, 0.341, 1 }; // definiowanie koloru do BLEND
        glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, c ); // w³aczenie koloru do BLEND
        break;
    }
   
   
   
}

GLuint LoadTexture( const char * filename )
{
   
   
   
    GLuint texture;
    int width, height;
   
    unsigned char * data;
   
    FILE * file;
   
    file = fopen( filename, "rb" );
   
    if( file == NULL ) return 0;
   
    if( filename == "domek.bmp" )
    {
        width = 512;
        height = 512;
    }
   
    else
    {
        width = 128;
        height = 128;
    }
    data =( unsigned char * ) malloc( width * height * 3 );
    //  int size = fseek(file,);
    fread( data, width * height * 3, 1, file );
    fclose( file );
   
    for( int i = 0; i < width * height; ++i )
    {
        int index = i * 3;
        unsigned char B, R;
        B = data[ index ];
        R = data[ index + 2 ];
       
        data[ index ] = R;
        data[ index + 2 ] = B;
       
    }
   
   
   
    glGenTextures( 1, & texture );
    glBindTexture( GL_TEXTURE_2D, texture );
    glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE );
    gluBuild2DMipmaps( GL_TEXTURE_2D, 3, width, height, GL_RGB, GL_UNSIGNED_BYTE, data );
   
    std::cout << "asadsd";
    return texture;
}
P-82751
pekfos
» 2013-05-12 13:53:04
Zwalniasz pamięć zaalokowaną w LoadTexture?

C/C++
if( filename == "domek.bmp" )
Tak się nie porównuje tekstów.
P-82777
Menos
Temat założony przez niniejszego użytkownika
» 2013-05-12 14:02:26
Na samym koncu funkcji jest

free(data)

ale to nic nie daje..


Wiem ze sie nie porownuje;) jest strcmpy() do tego. Na szybko to robilem poprawie
P-82782
Menos
Temat założony przez niniejszego użytkownika
» 2013-05-12 16:12:28
Ma ktos jakis pomysl?
P-82797
« 1 »
  Strona 1 z 1