C++ C++;DirectX-加载纹理
我正在使用来自的how-to-1源 在这个例子中,一切都很好,但现在我想使用PNG(或任何具有alpha和更好压缩的格式)而不是BMP 函数调用为:C++ C++;DirectX-加载纹理,c++,directx,C++,Directx,我正在使用来自的how-to-1源 在这个例子中,一切都很好,但现在我想使用PNG(或任何具有alpha和更好压缩的格式)而不是BMP 函数调用为: D3DXCreateTextureFromResourceEx(m_pD3DDevice, gl_hThisInstance, MAKEINTRESOURCE(IDB_BITMAP1),
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_信息结构中指定格式(其余部分为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);
但它不起作用。问题是因为D3DXCreateTextureFromFileEx中有指定的高度和宽度,在所有格式上都将这两个参数保留为0加载的纹理 但这并没有使我的纹理在屏幕上显示为alpha 通过谷歌搜索,我发现:
m_pBackgroundSprite->Begin(D3DXSPRITE_ALPHABLEND);
这解决了问题。结果表明,我必须指定文件的精确x和y维度,或者将其设置为0。现在我有了新问题,无法将我的纹理设置为alpha,尝试了png、dds等。如果您有新问题,请更新您的帖子,而不是只留下评论。谢谢,我解决了问题。现在添加了它作为答案。