Powtarzanie textury FreeGLut [Open GL]
Ostatnio zmodyfikowano 2013-05-12 16:12
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 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; case 1: glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); break; case 2: glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND ); float c[ 4 ] = { 0.12351, 0.2223, 0.341, 1 }; glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, c ); 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 ); 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; }
|
|
pekfos |
» 2013-05-12 13:53:04 Zwalniasz pamięć zaalokowaną w LoadTexture? if( filename == "domek.bmp" )
Tak się nie porównuje tekstów. |
|
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 |
|
Menos Temat założony przez niniejszego użytkownika |
» 2013-05-12 16:12:28 Ma ktos jakis pomysl? |
|
« 1 » |