首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateTexture2D失败了。(d3d)

CreateTexture2D失败了。(d3d)
EN

Stack Overflow用户
提问于 2014-01-24 04:02:59
回答 1查看 3.5K关注 0票数 0

我正在尝试创建D3D纹理2d,并使用分阶段使用。

它总是失败的错误:“不正确的参数”(代码0x80070057)

我不明白,除了制造问题之外,我还能创造出别的东西,但这不能成功.在我的电脑从窗户飞出去之前请帮帮我..。请..。

下面是有问题的代码:

代码语言:javascript
复制
    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* device = nullptr;D3D_FEATURE_LEVEL级别;ID3D11DeviceContext* context = nullptr;

代码语言:javascript
复制
    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
        );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-24 14:57:27

找到它:

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

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

我的电脑没有从窗户飞出去!

对每个人来说都很好:)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21324201

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档