Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;DirectX-加载纹理_C++_Directx - Fatal编程技术网

C++ C++;DirectX-加载纹理

C++ C++;DirectX-加载纹理,c++,directx,C++,Directx,我正在使用来自的how-to-1源 在这个例子中,一切都很好,但现在我想使用PNG(或任何具有alpha和更好压缩的格式)而不是BMP 函数调用为: D3DXCreateTextureFromResourceEx(m_pD3DDevice, gl_hThisInstance, MAKEINTRESOURCE(IDB_BITMAP1),

我正在使用来自的how-to-1源

在这个例子中,一切都很好,但现在我想使用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_信息结构中指定格式(其余部分为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等。如果您有新问题,请更新您的帖子,而不是只留下评论。谢谢,我解决了问题。现在添加了它作为答案。