martin at March 14th, 2003 19:35 — #1
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.
Any help will be appreciated,
baldurk at March 15th, 2003 03:34 — #2
if you look at the scene, make sure that the quads do have an alpha of 0.6. ie. see if you can see through them. If that's OK, then it's a problem in the reading process.
martin at March 15th, 2003 09:04 — #3
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.
baldurk at March 15th, 2003 10:08 — #4
well, that's not the problem.. Do the colour values get read right?
martin at March 15th, 2003 10:20 — #5
I read the values from the framebuffer with
All alpha values turn out to be 1.
dk2 at March 15th, 2003 15:08 — #6
How are you rendering the screen? Are you sure you are rendering transperant objects?
Btw, read up on 'glReadBuffer()' to specify the buffer you want to read from.
martin at March 15th, 2003 18:59 — #7
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.
martin at March 15th, 2003 20:01 — #8
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.
noor at March 15th, 2003 20:52 — #9
Hmm :rolleyes: . When I read the help menu concerning the problem you had, the help menu did not say anything about GLUT. But anyway congratulations .