Textur mit AlphaKanal erstellen [OpenGL]
-
Also, ich habe eine Funktion zum ERstellen einer Kachelförmigen Textur, die zum einen farbige Kacheln, zum andern schwarze Kacheln mit einem Alphawert von 0 erstellt:
void MakeTexture() { const int Width = 128,Height = 128; GLubyte Image[Width][Height][4]; for(int i=0;i<Width;i++) { for(int j=0;j<Height;j++) { int c=(((i&0x8)==0)^((j&0x8)==0)); Image[i][j][0] = c*255; Image[i][j][1] = (1-c)*125; Image[i][j][2] = c*25; if(c == 1) Image[i][j][3] = 255; else Image[i][j][3] = 0; } } glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexImage2D(GL_TEXTURE_2D,0,4,Width,Height,0,GL_RGBA,GL_UNSIGNED_BYTE,Image); }Das Anzeigen der Textur funktioniert auch prima, und wenn ich die AlphaWerte ändere, sieht man das auch.
Was jedoch nicht klappt, ist Transparenz, also dass der Teile der Textur mit einem besimmten Alpha-Werte garnicht rendert.Der Code sieht so aus:
glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER,0.5); glBindTexture(GL_TEXTURE_2D, texture[0]); glPushMatrix(); glTranslated(0,0,2); //glRotated(20,0,1,0); glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex3f(-0.5*Size, 0, 0); glTexCoord2f(0, 1); glVertex3f(-0.5*Size, 1*Size, 0); glTexCoord2f(1, 1); glVertex3f( 0.5*Size, 1*Size, 0); glTexCoord2f(1, 0); glVertex3f( 0.5*Size, 0, 0); glEnd(); glPopMatrix(); glDisable(GL_ALPHA_TEST);Also er rendert einfach alles, wenn ich GL_LESS statt GL_GREATER schreibe, rendert er nix.
Woran könnte das liegen??
danke schonmal!
-
Wird Dein Textur-Alpha noch mit irgendwas anderem verrechnet (Vertex-Color, Lighting, etc) ?
-
Hi hast du Lichtberechnung an? Wenn ja versuchs mal ohne Licht.
glDisable(GL_LIGHTING);Edit: War schon einer schneller mit dem Vorschlag.