I try to implement something called Opacity Shadow Mapping by which it is possible to calculate shadows of semi-transparent objects. In order to do this, I have to render the scene several times with special clipping parameters. After rendering, I will read back the resulting alpha values from the color buffer. But unfortunately, all alpha values are one. I am using the blending equation GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA. My question: How can I render the scene and get back different alpha values at different positions? To get more precisely: When I render a quad textured with a bitmap that has an alpha value of 0.6, I want this 0.6 appear in the color buffer again. When I render this scene again with another quad lying over the other, I want the two alpha values properly accumulated and stored again in the color buffer.

Sorry, that's not my problem. I know how to texture transparent objects, but I want this alpha value in the framebuffer and I have no idea how to do this. The alpha values in the framebuffer are contstantly one after the rendering process.

Yes, I'm sure that I am rendering transparent objects, the color values are all fine blended together. I am using glReadBuffer(GL_BACK) to read from the back buffer (I'm using double buffering). There is no alpha buffer from where I can read the intermediate alpha values.

Hmm, I see where the problem is... I tried a demo program using GLUT. When I initialize GLUT with GLUT_RGBA and especially with GLUT_ALPHA, it works. Unfortunately, I am not using GLUT, but Trolltechs Qt OpenGL component. I have to look for an equivalent option there.