FrontBuffer有alpha值吗?

时间:2012-06-25 07:20:36

标签: direct3d alpha swap tga

我试图使用GetFrontBufferData方法保存.tga图像,但是alpha值丢失。他们完全是一个。我可以从RenderTarget或BackBuffer获得正确的alpha值,但rgb值不正确。即使现场存在为了立即显示,后备箱仍然比前置缓冲器更暗 现在我得到2个问题:
Q1:FrontBuffer有alpha值吗?
Q2:当你尝试渲染透明的东西时,后缓冲区和前缓冲区的数据有什么区别?

1 个答案:

答案 0 :(得分:0)

渲染透明对象时,其alpha值用于执行Alpha混合。混合完成后,新值将写入后缓冲区。如果要保留alpha值,则后台缓冲区的格式应为D3DFMT_A8R8G8B8。您还应该记住在调用IDirect3DDevice9::Clear()时清除Alpha通道。渲染完成后,只需翻转后缓冲区和前缓冲区指针(read more)。因此,两个缓冲区具有相同的格式(因此,如果您使用RGBA格式创建后缓冲区,则前缓冲区也将是RGBA)。顺便说一句,您可以获取后台缓冲区并锁定它而不是获取前台缓冲区。

默认情况下,Alpha混合对R,G,B和A通道执行相同的操作,但您可以仅为Alpha通道指定单独的操作 - see this