Transparency problem?
I create a 128 x 128 grass texture, I then tile sub images over it using glTexSubImage2d, these sub images are loaded using the glpng library and have valid alpha value!
but when I run my app the transparent areas are black!
instead of showing the grass in the main texture!
here is some of my code can you help.
oid COpenGLView::InitGL()
{
glClearColor(0.0f, 0.0f, 0.0f, 1.0f) ;
glShadeModel(GL_FLAT);
//glEnable(GL_DEPTH_TEST);
int x,y;
for(x =0; x < 128; x++)
{
for(y = 0; y < 128; y++)
{
Tile[x][y][0] = 255;
Tile[x][y][1] = 0;
Tile[x][y][2] = 0;
Tile[x][y][3] = 255;
}
}
//SubTile[0] = auxDIBImageLoad("E:\\Grass.bmp");
//SubTile[1] = auxDIBImageLoad("E:\\Wheat.bmp");
pngLoadRaw("E:\\Grass.png",&info[0]);
pngLoadRaw("E:\\Marsh.png",&info[1]);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE) ;
glEnable(GL_TEXTURE_2D);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 128, 128,
0, GL_RGBA, GL_UNSIGNED_BYTE,Tile) ;
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,64,64,GL_RGB,GL_UNSIGNED_BYTE,info[0].Data);
glTexSubImage2D(GL_TEXTURE_2D,0,0,64,64,64,GL_RGB,GL_UNSIGNED_BYTE,info[0].Data);
glTexSubImage2D(GL_TEXTURE_2D,0,64,0,64,64,GL_RGB,GL_UNSIGNED_BYTE,info[0].Data);
glTexSubImage2D(GL_TEXTURE_2D,0,64,64,64,64,GL_RGB,GL_UNSIGNED_BYTE,info[0].Data);
}
void COpenGLView::DrawGL()
{
glClear(GL_COLOR_BUFFER_BIT / GL_DEPTH_BUFFER_BIT);
//glColor3f(1.0,0.0,0.0);
//glPixelStorei(GL_UNPACK_ALIGNMENT, 1) ;
glEnable(GL_TEXTURE_2D);
//glBindTexture(GL_TEXTURE_2D,texture[0]);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5);
//glEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,64,64,GL_RGBA,GL_UNSIGNED_BYTE,info[1].Data);
glBegin(GL_QUADS);
glTexCoord2f(0,0); glVertex2i(10,138);
glTexCoord2f(0,1); glVertex2i(10,10);
glTexCoord2f(1,1); glVertex2i(138,10);
glTexCoord2f(1,0); glVertex2i(138,138);
glEnd();
glDisable(GL_BLEND);
glDisable(GL_ALPHA_TEST);
//glBindTexture(GL_TEXTURE_2D, texture[1]);
//glTexSubImage2D(GL_TEXTURE_2D,0,GL_RGBA,info.Width,info.Height,info.Width, info.Height,
//GL_UNSIGNED_BYTE,info.Data );
glFlush();
glDisable(GL_TEXTURE_2D);
}
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement
Recommended Tutorials
Advertisement