[OpenGL] Tekstury, wykorzystanie kanału ALFA
Ostatnio zmodyfikowano 2010-01-19 14:23
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: 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: 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? |
|
DejaVu Temat założony przez niniejszego użytkownika |
» 2010-01-19 14:23:03 Problem jak zwykle sam sobie już rozwiązałem. 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. |
|
« 1 » |