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

[OPENGL] Przeźroczystość

Ostatnio zmodyfikowano 2011-11-04 11:28
Autor Wiadomość
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?

C/C++
void rysujDrzewo()
{
    glPushMatrix();
   
    glBindTexture( GL_TEXTURE_2D, tekstura[ 1 ] );
    //wyświetlanie obu stron tekstury
    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();
}
P-43282
Drraven
» 2011-11-03 15:54:43
Czarny kolor tła?
I tekstury daj do VBO a nie jakimiś antykami je ładujesz.
P-43288
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?
P-43289
Drraven
» 2011-11-03 16:22:46
glVertex3f dzieś zmień i nie będzie czarnego :D
P-43290
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.
P-43291
Drraven
» 2011-11-04 06:12:53
Zobacz w tutorialu, pewnie przed rysowaniem drzewa jeszcze to masz.
P-43304
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:

C/C++
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;
}
P-43308
« 1 »
  Strona 1 z 1