我正在使用来自http://www.mikoweb.eu/index.php?node=28的操作方法1来源 DX9
在该示例中一切正常,但现在我想使用PNG(或任何具有alpha和更好压缩的格式)而不是BMP。
函数调用是:
D3DXCreateTextureFromResourceEx(m_pD3DDevice,
gl_hThisInstance,
MAKEINTRESOURCE(IDB_BITMAP1),
256,
128,
0,
NULL,
D3DFMT_UNKNOWN,
D3DPOOL_MANAGED,
D3DX_FILTER_NONE,
D3DX_FILTER_NONE,
0xFF000000,
NULL,
NULL,
&m_pBackgroundTexture);
资源文件:
IDB_BITMAP1 BITMAP "background.bmp"
我将资源更改为:
IDB_BITMAP1 RC_DATA "pic.png"
我的更改后D3DXCreateTextureFromResourceEx返回D3D_OK,但屏幕上没有显示任何内容。看到文档之后,我很快就想到我应该在D3DXIMAGE_INFO结构中指定格式(并将其余部分保留为0,仍然没有。
我的最终目标是从文件加载纹理,所以我尝试了:
D3DXCreateTextureFromFileEx(m_pD3DDevice, "pic.png", 200, 200, 0, 0, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_FILTER_NONE, D3DCOLOR_ARGB(150,100,100,100), NULL, NULL, &m_pBackgroundTexture);
但它没有用。
答案 0 :(得分:0)
问题是因为在D3DXCreateTextureFromFileEx中指定了高度和宽度,在所有格式上都正确地将两个参数都作为0加载纹理。
但这并没有让我的纹理在屏幕上显示为alpha。
通过谷歌搜索我发现:
m_pBackgroundSprite->Begin(D3DXSPRITE_ALPHABLEND);
解决了这个问题。