【问题标题】:CreateTexture2D fail... (d3d)CreateTexture2D 失败... (d3d)
【发布时间】:2014-01-24 04:02:59
【问题描述】:

我正在尝试使用 STAGING 来创建 D3D 纹理 2d。

总是失败并出现错误:“参数不正确”(代码 0x80070057)...

我不明白,我可以创建除了 staging 没有问题,但无法成功...请在我的电脑飞出窗口之前帮助我...请...

这是有问题的代码:

    int w = 128;
    int h = 128;


    ID3D11Texture2D * tex;
    D3D11_TEXTURE2D_DESC tdesc;
    D3D11_SUBRESOURCE_DATA tbsd;

    ZeroMemory(&tdesc, sizeof(D3D10_TEXTURE2D_DESC));

    WORD *buf = new WORD[128*128];

    for (int i = 0; i < h; i++)
    for (int j = 0; j < w; j++)
    {
            buf[i*128 + j] = (WORD) 0xffffffff;
    }

    tbsd.pSysMem = (void *)buf;
    tbsd.SysMemPitch = w * 4;
    tbsd.SysMemSlicePitch = w * h * 4;

    tdesc.Width = w;
    tdesc.Height = h;
    tdesc.MipLevels = 1;
    tdesc.ArraySize = 1;

    tdesc.SampleDesc.Count = 1;
    tdesc.SampleDesc.Quality = 0;
    tdesc.Usage = D3D11_USAGE_STAGING;
    tdesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    tdesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;

    tdesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ;
//  tdesc.CPUAccessFlags = D3D11_CPU_ACCESS_READ | D3D11_CPU_ACCESS_WRITE;  // Does'nt work either...
    tdesc.MiscFlags = 0;

    HRESULT eblah = 0; char tmpstr[128];

    eblah = device->CreateTexture2D(&tdesc, &tbsd, &tex);

    if (FAILED(eblah))
    {
        wsprintfA(tmpstr, "Error code : %lX", eblah); OutputDebugStringA(tmpstr);
        ErrorMessage(eblah);
    }

我已经把它作为设备,在代码的前面,以防: ID3D11Device* 设备 = nullptr; D3D_FEATURE_LEVEL 级别; ID3D11DeviceContext* context = nullptr;

    HRESULT hr = D3D11CreateDevice(
        nullptr,
        D3D_DRIVER_TYPE::D3D_DRIVER_TYPE_NULL,    // Tried D3D_DRIVER_TYPE_HARDWARE too
        nullptr,
        0,
        nullptr,
        0,
        D3D11_SDK_VERSION,
        &device,
        &level,
        &context
        );

【问题讨论】:

    标签: c++ windows direct3d


    【解决方案1】:

    找到了:

    _ 我在创建设备时使用了 D3D11_CREATE_DEVICE_FLAG::D3D11_CREATE_DEVICE_DEBUG 标志,这给了我非常有用的调试信息。初学者必备!!!

    _ tdesc.BindFlags 在为暂存创建 ID3D11Texture2D 时必须为 0。

    _我的电脑没有飞过窗户!!!

    祝大家有美好的一天:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-08
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多