【问题标题】:C++ DirectX - Load textureC++ DirectX - 加载纹理
【发布时间】:2014-06-01 11:23:04
【问题描述】:

我正在使用来自http://www.mikoweb.eu/index.php?node=28how-to 1 sourceDX9

在该示例中一切正常,但现在我想使用 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);

但是没有用。

【问题讨论】:

  • 原来我必须指定文件的确切 x 和 y 尺寸,或者将其设置为 0。
  • 现在我遇到了新问题,无法将我的纹理设为 alpha,尝试了 png、dds、...
  • 如果您有新问题,请更新您的帖子,而不是仅仅发表评论。
  • 谢谢,我解决了这个问题。现在将其添加为答案。

标签: c++ directx


【解决方案1】:

问题是因为在 D3DXCreateTextureFromFileEx 中指定了高度和宽度,这两个参数都为 0,在所有格式上都正确加载了纹理。

但这并没有使我的纹理在屏幕上显示为 alpha。

通过谷歌搜索我发现:

m_pBackgroundSprite->Begin(D3DXSPRITE_ALPHABLEND);

解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多