[OpenGL] Usuwanie koloru (czarnego) tła
Ostatnio zmodyfikowano 2013-05-17 14:01
wojownik266 Temat założony przez niniejszego użytkownika |
[OpenGL] Usuwanie koloru (czarnego) tła » 2013-05-17 13:39:11 W moim zamierzeniu kod funkcji, który widać poniżej, ma za zadanie wczytać teksturę i usunąć z niej czarny kolor. Jednakże funkcja ta działa tylko w 50% bo wczytuje tylko teksturę ale nie usuwa czarnego koloru:(. Czy ktoś mógłby powiedzieć co w tej funkcji jest źle zrobione? Co dodać/usunąć co poprawić etc.!? Przykłady kodu mile widziane... Miłego dnia! void LadujTekstury() { AUX_RGBImageRec * Tekstura; glGenTextures( 1, & texture[ 0 ] ); BYTE * dane1; if( Tekstura = auxDIBImageLoad( "Data/tile6.bmp" ) ) { int w =(( Tekstura->sizeX ) * 4 ) * Tekstura->sizeY; dane1 = new BYTE[ w ]; int k = 0, l = 0; while( k < w ) { dane1[ k ] = Tekstura->data[ l ]; dane1[ k + 1 ] = Tekstura->data[ l + 1 ]; dane1[ k + 2 ] = Tekstura->data[ l + 2 ]; if(( Tekstura->data[ l ] + Tekstura->data[ l + 1 ] + Tekstura->data[ l + 2 ] ) == 0 ) dane1[ k + 3 ] = 0; else dane1[ k + 3 ] = 255; k += 4; l += 3; } glBindTexture( GL_TEXTURE_2D, texture[ 1 ] ); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, Tekstura->sizeX, Tekstura->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, dane1 ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); } delete[] dane1; }
|
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2013-05-17 14:01:18 W oczekiwaniu na odpowiedź nasunęło mi się rozwiazanie... Rozwiazaniem tego problemu jest dodanie do kodu funkcji tego kodu: glEnable( GL_BLEND ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
Tak że problem rozwiazany!!! |
|
« 1 » |