读书人

关于dx9中Surface的透明色有关问题

发布时间: 2012-02-17 17:50:42 作者: rapoo

关于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时
就出现了透明效果.

读书人网 >网络游戏

热点推荐