为了在一个简单的矩形上获得纹理,我得到一个奇怪的问题。似乎只使用纹理中的最后一列像素。 http://i.imgur.com/40EoI.png< - 结果是顶部的黑白矩形。
我已经跋涉已经问过的问题的深度,并且在谷歌的危险区域内旅行无济于事。我把我的代码与我基于它的教程进行了比较(巧合的是,这与我选择的纹理一致)但仍然令我感到困惑。 我以为它可能是输入布局,也许是偏移?
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
我有一种感觉,我会踢自己。 非常感谢我可能收到的任何帮助,以及道歉,如果我仍然太模糊。
答案 0 :(得分:0)
似乎你输入的布局是错误的:
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。