簡體   English   中英

CreateTexture2D失敗…(d3d)

[英]CreateTexture2D fail… (d3d)

我正在嘗試使用STAGING用法創建D3D紋理2d。

總是失敗,並顯示錯誤:“參數不正確”(代碼0x80070057)...

我不明白,除了暫無問題外,我還可以創建其他文件,但無法成功完成此操作...請在計算機飛過窗口之前幫助我...請...

這是有問題的代碼:

    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;

    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
        );

找到了 :

_我在創建設備時使用了D3D11_CREATE_DEVICE_FLAG :: D3D11_CREATE_DEVICE_DEBUG標志,這為我提供了非常有用的調試信息。 每個初學者都必須擁有!

創建用於暫存的ID3D11Texture2D時,_ tdesc.BindFlags必須為0。

_我的電腦沒有從窗戶飛過!

祝大家有美好的一天:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM