2012-12-09 94 views
1

爲了嘗試在簡單矩形上獲取紋理,我遇到了一個奇怪的問題。似乎只使用紋理中最後一列像素。 http://i.imgur.com/40EoI.png < - 結果是在那裏的黑色和白色的矩形。Directx 11 - 僅部分顯示紋理

我已經跋涉了已經提出的問題的深度,並且走過了谷歌危險的下賤之路,但無濟於事。我將我的代碼與我基於它的教程進行了比較(巧合的是,它適用於我選擇的紋理),但仍然感到困惑。 我在想這可能是輸入佈局,也許補償?

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

看來你輸入的佈局是錯誤的:

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 28取代24,因爲顏色是大小爲16。

+0

你是一個很棒的人。我甚至會說最好的。這是一大堆。謝謝 ;) – user1888727