1
我有D3DX11CreateShaderResourceViewFromMemory幫助函數的問題。D3DX11CreateShaderResourceViewFromMemory爲什麼只上傳紋理的部分副本?
我從文件或ZIP中讀取一些紋理,並將原始字節和長度傳遞給幫助函數,但只有部分紋理上傳(由PIX確認)。 我試着手動調整長度,但無濟於事。 下面是從文件加載紋理的代碼:
struct FileDataLoader
{
void Load()
{
std::ifstream file(mFileName);
if (file)
{
file.seekg(0,std::ios::end);
std::streampos length = file.tellg();
file.seekg(0,std::ios::beg);
mBuffer.resize(length);
file.read(&mBuffer[0],length);
file.close();
}
}
void Decompress(void*& data, std::size_t& numBytes)
{
data = &mBuffer[0];
numBytes = mBuffer.size();
}
std::wstring mFileName;
std::vector<char> mBuffer;
};
FileDataLoader fdl;
fdl.mFileName = L"Content\\Textures\\Smoke.dds";
fdl.Load();
void* bytes;
std::size_t size;
fdl.Decompress(bytes, size);
DXCall(D3DX11CreateShaderResourceViewFromMemory(device, bytes, size, NULL, NULL, &particleTexture, NULL));
那只是我使用調試這個問題的一個示例代碼,我把範圍縮小到了文件加載和D3DX的輔助功能。 現在,如果我這樣做,而不是:
DXCall(D3DX11CreateShaderResourceViewFromFileW(device, L"Content\\Textures\\Smoke.dds", NULL, NULL, &particleTexture, NULL));
它完美的罰款。
任何想法爲什麼它不會完全上傳紋理?
嗯,這是一個_old_問題,我已經移動到不同的庫來加載紋理,但是,你確實有一個非常有效的點,這可能是我的問題。 (本來難以用疲憊的眼睛盯着嘿嘿) 所以我會接受你的回答,謝謝你! – 2012-01-13 20:15:22