关于dx9中Surface的透明色问题
我利用dx9中的Surface来画2D的东东,在设置color key的时候,遇到了点问题。
- C/C++ code
//载入图片到离屏页面 if ( FAILED(D3DXLoadSurfaceFromFile(srcSurface,//目的页面 NULL,//目的页面调色板 NULL,//目的页面区域 "bk.bmp",//源文件路径 NULL,//源文件区域 D3DX_DEFAULT,//文件过滤类型 D3DCOLOR_ARGB(0,0,0,0),//0,//ColorKey NULL )))//图片信息 { return false; } return true;
我的bk.bmp 里面,我想设置黑色为透明色,可是显示出来,黑色还在,没法透明。请高人指点。
[解决办法]
如果背景画面也是黑色的话,可以使用blending来实现
[解决办法]
你可以设置透明度来源.
//-----------------------------------------------
//指定Alpha来源
//-----------------------------------------------
m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
m_pDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1 );
你到SDK里面找一下SetTextureStageState的详细设置.
[解决办法]
画2D建议使用shader
[解决办法]
你改成D3DCOLOR_ARGB(255,0,0,0)再试试看
[解决办法]
没有这个做过,一般用ID3DXSprite接口画图
[解决办法]
你surface的格式与图片的格式是一致的吗?
[解决办法]
你确认你图片上的黑色值是0吗?
[解决办法]
嘿嘿,我遇上了和你同样的情况,说一下自己的解决办法,看对你有没有帮助.
我加载的是一张jpg贴图, 格式是D3DFMT_X8R8G8B8, 因为没有A通道所以无论
是设置Colorkey还是将所有像素的颜色取反都不会有透明效果, 这样发现之后
我就在加载的时候将图片的格式转化为了D3DFMT_A8R8G8B8再设置ColorKey时
就出现了透明效果.