[OPENGL] Przeźroczystość
Ostatnio zmodyfikowano 2011-11-04 11:28
wojownik266 Temat założony przez niniejszego użytkownika |
[OPENGL] Przeźroczystość » 2011-11-03 13:01:17 Witam. Mam texturę dzewa na czarnym tle i niewiem jak usunąć ten czarny kolor. Kod poniżej nie działa. Jakieś wskazówki, sugestie?
void rysujDrzewo() { glPushMatrix(); glBindTexture( GL_TEXTURE_2D, tekstura[ 1 ] ); glDisable( GL_CULL_FACE ); glEnable( GL_BLEND ); glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); glTranslatef( 0.0, 1.0, 0.0 ); glBegin( GL_QUADS ); glTexCoord2f( 0.0f, 0.0f ); glVertex3f( - 1.0f, 1.0f, - 5.0f ); glTexCoord2f( 1.0f, 0.0f ); glVertex3f( 1.0f, 1.0f, - 5.0f ); glTexCoord2f( 1.0f, - 1.0f ); glVertex3f( 1.0f, - 1.0f, - 5.0f ); glTexCoord2f( 0.0f, - 1.0f ); glVertex3f( - 1.0f, - 1.0f, - 5.0f ); glEnd(); glDisable( GL_BLEND ); glEnable( GL_CULL_FACE ); glPopMatrix(); }
|
|
Drraven |
» 2011-11-03 15:54:43 Czarny kolor tła? I tekstury daj do VBO a nie jakimiś antykami je ładujesz. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-11-03 16:14:33 Mój aktualny poziom programistyczny niestety nie pozwala mi na takie rozwiązanie. Jakieś inne sugestie, wskazówki? |
|
Drraven |
» 2011-11-03 16:22:46 glVertex3f dzieś zmień i nie będzie czarnego :D |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-11-03 16:28:31 Gdzieś to znaczy gdzie? Wybacz że pytam ale taki trochę nierozgarnięty jestem. |
|
Drraven |
» 2011-11-04 06:12:53 Zobacz w tutorialu, pewnie przed rysowaniem drzewa jeszcze to masz. |
|
wojownik266 Temat założony przez niniejszego użytkownika |
» 2011-11-04 11:28:41 Problem z przeźroczystością czarnego koloru rozwiązałem w następujący sposób:
typedef struct _bitmapFile { int width, height; unsigned char * data; } bitmapFile; GLuint texture[ 3 ]; bitmapFile bitmap; int loadBitmapFromFileWithAlpha( char * fileName, bitmapFile * bitmap ) { bitmapFile tempBitmap; int i, j; if( !loadBitmapFromFile( fileName, & tempBitmap ) ) return 0; bitmap->data =( unsigned char * ) malloc( tempBitmap.width * tempBitmap.height * 4 ); bitmap->width = tempBitmap.width; bitmap->height = tempBitmap.height; for( i = 0, j = 0; i < bitmap->width * bitmap->height * 3; i += 3, j += 4 ) { bitmap->data[ j ] = tempBitmap.data[ i ]; bitmap->data[ j + 1 ] = tempBitmap.data[ i + 1 ]; bitmap->data[ j + 2 ] = tempBitmap.data[ i + 2 ]; if( tempBitmap.data[ i ] == 0 && tempBitmap.data[ i + 1 ] == 0 && tempBitmap.data[ i + 2 ] == 0 ) bitmap->data[ j + 3 ] = 0; else bitmap->data[ j + 3 ] = 255; } free( tempBitmap.data ); return 1; }
|
|
« 1 » |