У меня проблема с вспомогательной функцией 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));
, он прекрасно работает.
Есть идеи, почему он не загрузит текстуру полностью?