Jump to content


Alpha values


8 replies to this topic

#1 martin

    New Member

  • Members
  • Pip
  • 5 posts

Posted 15 March 2003 - 12:35 AM

Hi all,

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,
MK

#2 baldurk

    Senior Member

  • Members
  • PipPipPipPip
  • 1057 posts

Posted 15 March 2003 - 08:34 AM

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.
baldurk
He who knows not and knows that he knows not is ignorant. Teach him.
He who knows not and knows not that he knows not is a fool. Shun him.

#3 martin

    New Member

  • Members
  • Pip
  • 5 posts

Posted 15 March 2003 - 02:04 PM

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.

#4 baldurk

    Senior Member

  • Members
  • PipPipPipPip
  • 1057 posts

Posted 15 March 2003 - 03:08 PM

well, that's not the problem.. Do the colour values get read right?
baldurk
He who knows not and knows that he knows not is ignorant. Teach him.
He who knows not and knows not that he knows not is a fool. Shun him.

#5 martin

    New Member

  • Members
  • Pip
  • 5 posts

Posted 15 March 2003 - 03:20 PM

I read the values from the framebuffer with
glReadPixels(0,0,512,512,GL_ALPHA,GL_UNSIGNED_BYTE,map);
All alpha values turn out to be 1.

#6 Dia

    DevMaster Staff

  • Administrators
  • 1121 posts

Posted 15 March 2003 - 08:08 PM

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.

#7 martin

    New Member

  • Members
  • Pip
  • 5 posts

Posted 15 March 2003 - 11:59 PM

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.

#8 martin

    New Member

  • Members
  • Pip
  • 5 posts

Posted 16 March 2003 - 01:01 AM

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.

#9 Noor

    Senior Member

  • Members
  • PipPipPipPip
  • 503 posts

Posted 16 March 2003 - 01:52 AM

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 :) .
"What ever happened to happily ever after?"





1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users