问题是这样的,
目前有一个A8R8G8B8的Surface,
还有两张图片纹理,
一张是红色的PNG,它所有的像素A通道为255
一张是绿色的PNG,它所有的像素A通道为128现在我先把红色PNG图片纹理通过使用ID3DXSprite接口绘制到Surface上,OK一切正常
然后我再把绿色PNG图片纹理通过使用ID3DXSprite接口绘制到Surface上,
发现绿色PNG图片纹理绘制部分确实有透明效果,可以看到该部分红色和绿色混合
OK 我把最终效果保存为PNG,然后通过PhotoShop打开看看
发现最后这张图片绿色PNG图片纹理部分的ALPHA通道是半透明的
但是我想要的是最后这张图片A通通道都是255,没有半透明的部分但是我理解
先画的第一张是红色的,它所有的像素A通道为255,所以时候Surface上的A通道都是255不透明的
后画的第二张是绿色的,它所有的像素A通道为128,所以能ALPHA出下面的红色,
最重要的是
进行了2次混合操作之后,A通道应该是叠加的,应该是绿色虽然能混合红色,但是也不至于改变
绿色区域的最终A通道值啊 求解
下面是我的部分代码direct3ddevice9->SetRenderState(D3DRS_ALPHABLENDENABLE, true);//开启ALPHA混合,为了能够使ITEM图标透明
direct3ddevice9->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);//设置ALPHA 来源色混合系数
direct3ddevice9->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);//设置ALPHA 目标色混合系数
direct3ddevice9->ColorFill(this->Surface,&rect,D3DCOLOR_ARGB(0x00,0xFF,0xFF,0xFF));//清除目标表面
direct3ddevice9->SetRenderTarget(0,this->Surface);//设置要渲染目标表面
this->_Sprite->Begin(D3DXSPRITE_ALPHABLEND);
this->_Sprite->Draw(this->RedTexture,&src,NULL,NULL,0xFFFFFFFF);
this->_Sprite->Draw(this->GreenTexture,&src,NULL,NULL,0xFFFFFFFF);研究了半天 始终无法解决 在此诚心向各位前辈请教 求指点