I have 2 png images that are used as textures in a Qt / C ++ 2D OpenGL application. The first is used as some "middle" ground, and the second is used as an "object" that displays "ontop" (Note: they all have the same value of the atm z-value, I get the desired behavior, a certain order). The “object” texture is partially translucent. The "medium" texture is mostly solid. The problem is that the translucent part of the texture of the “object” has a solid background color, and not the “middle” texture.
Any tips on how to achieve this?
The following OpenGL figs are used for rendering textures.
glEnable (GL_TEXTURE_2D); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Thanks for any help.
Edit:
More code:
glColor4f(1.0f, 1.0f, 1.0f, 1.0f); glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.1f); glEnable(GL_TEXTURE_2D); glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glBindTexture(GL_TEXTURE_2D, c->_texture); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glBegin(GL_QUADS); { glTexCoord2i(0,0); glVertex2i(-128,-128); glTexCoord2i(0,1); glVertex2i(-128,128); glTexCoord2i(1,1); glVertex2i(128,128); glTexCoord2i(1,0); glVertex2i(128,-128); } glEnd(); glDisable(GL_TEXTURE_2D); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST);
Edit: how do I upload my texture, and as far as I can tell, it loads it with alpha
QImage img("./images/dummycar.png","PNG"); QImage t(QGLWidget::convertToGLFormat(img)); glGenTextures(1, &_texture); glBindTexture(GL_TEXTURE_2D, _texture); glTexImage2D( GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits() ); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
Screenshot: http://img824.imageshack.us/img824/1912/blackbox.png
Skyimage is a "medium" background, solid black.