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

[OpenGL] Tekstury, wykorzystanie kanału ALFA

Ostatnio zmodyfikowano 2010-01-19 14:23
Autor Wiadomość
DejaVu
Temat założony przez niniejszego użytkownika
[OpenGL] Tekstury, wykorzystanie kanału ALFA
» 2010-01-19 13:40:50
Mam problem z pełnym wykorzystaniem kanału ALFA tekstury w OpenGL. Mam teksturę, która ma określony jakiś kanał alfa. Tekstura ta została wczytana i zbindowana:
C/C++
glBindTexture( GL_TEXTURE_2D, m_iTexture );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexImage2D( GL_TEXTURE_2D, 0, image.getBytesPerPixel(), image.getWidth(), image.getHeight(), 0, image.getBytesPerPixel() == 3 ? GL_RGB
    : GL_RGBA
    , GL_UNSIGNED_BYTE
    , image.getPtr() );
Czytając różne tutoriale znalazłem częściowe rozwiązanie mojego problemu przeźroczystości i wygląda ono tak:
C/C++
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glEnable( GL_ALPHA_TEST );
glAlphaFunc( GL_GREATER, 0.1 );
glShadeModel( GL_SMOOTH );
glEnable( GL_COLOR_MATERIAL );
Problemem jest jednak to, że funkcja glAphaFunc ustawia czy ma być użyta przeźroczystość (w 100%) czy też nie (0%). Mnie interesuje wykorzystanie kanału alfa w takim stopniu w jakim jest zapisany w teksturze, tj. jeśli jest to 13% to żeby renderował kolory z taką przeźroczystością.

Wie ktoś czy się da to osiągnąć, a jeśli tak to jak?
P-13135
DejaVu
Temat założony przez niniejszego użytkownika
» 2010-01-19 14:23:03
Problem jak zwykle sam sobie już rozwiązałem.
C/C++
glEnable( GL_BLEND );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glEnable( GL_ALPHA_TEST );
glAlphaFunc( GL_ALWAYS, 0 );

Błąd o którym wspomniałem wynikał z tego, że rysowałem obiekty w złej kolejności.
P-13136
« 1 »
  Strona 1 z 1