【问题标题】:Directx 11 - Texture only partially displayedDirectx 11 - 仅部分显示纹理
【发布时间】:2012-12-10 00:31:15
【问题描述】:

为了在一个简单的矩形上获得纹理,我遇到了一个奇怪的问题。似乎只使用了纹理中的最后一列像素。 http://i.imgur.com/40EoI.png

我已经深入研究了已经提出的问题,并探索了 Google 的危险腹地,但无济于事。我已经将我的代码与我基于它的教程进行了比较(巧合的是,它适用于我选择的纹理)但仍然感到困惑。 我在想它可能是输入布局,也许是偏移量?

D3D11_INPUT_ELEMENT_DESC ied[] =
{
    {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
    {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},        
    {"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0},
};

dev->CreateInputLayout(ied, 3, VS->GetBufferPointer(), VS->GetBufferSize(), &pLayout);
devcon->IASetInputLayout(pLayout);

如果不是这个,那么就有可能是 CreateShaderResourceFromViewFile:

 D3DX11CreateShaderResourceViewFromFile(dev,        // the Direct3D device
                                   L"Ptitle.png",    // load Wood.png in the local folder
                                   NULL,           // no additional information
                                   NULL,           // no multithreading
                                   &Ttitle,      // address of the shader-resource-view
                                   NULL);          // no multithreading

另外,只是为了更好的衡量 - 虽然我确信它很好,这里是顶点和它们各自的纹理坐标

        // Title
    {-200.0f, 100.0f, 0.0f, D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), 0.0f, 1.0f},//13 BOTTOM LEFT
    {-200.0f, 200.0f, 0.0f, D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), 0.0f, 0.0f},//14 TOP LEFT
    {200.0f, 100.0f, 0.0f, D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), 1.0f, 1.0f},//15 BOTTOM RIGHT
    {200.0f, 200.0f, 0.0f, D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f), 1.0f, 0.0f},//16 TOP RIGHT

我有一种感觉,我会踢自己。 非常感谢我可能得到的任何帮助,如果我仍然过于含糊,请向我道歉。

【问题讨论】:

    标签: textures directx-11


    【解决方案1】:

    看来你输入的布局有误:

    D3D11_INPUT_ELEMENT_DESC ied[] =
    {
        {"POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0},
        {"COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0},        
        {"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 24, D3D11_INPUT_PER_VERTEX_DATA, 0},
    };
    

    对于 TEXCOORD,将 24 替换为 28,因为颜色的大小为 16。

    【讨论】:

    • 你是一个很棒的人。我什至会说最美妙的。那是一大堆。谢谢;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2014-07-12
    • 2012-06-10
    • 2018-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多