2
我目前已经使用CreateWICTextureFromFile加载了纹理,但是我想稍微控制一下它,并且我想将图像以字节的形式存储在资源加载器中。以下是两组测试代码,它们返回两个单独的结果,我正在寻找可能的解决方案的任何见解。DirectX11 CreateWICTextureFromMemory使用PNG
ID3D11ShaderResourceView* srv;
std::basic_ifstream<unsigned char> file("image.png", std::ios::binary);
file.seekg(0,std::ios::end);
int length = file.tellg();
file.seekg(0,std::ios::beg);
unsigned char* buffer = new unsigned char[length];
file.read(&buffer[0],length);
file.close();
HRESULT hr;
hr = DirectX::CreateWICTextureFromMemory(_D3D->GetDevice(), _D3D->GetDeviceContext(), &buffer[0], sizeof(buffer), nullptr, &srv, NULL);
作为上述代码的返回,我找不到组件。
std::ifstream file;
ID3D11ShaderResourceView* srv;
file.open("../Assets/Textures/osg.png", std::ios::binary);
file.seekg(0,std::ios::end);
int length = file.tellg();
file.seekg(0,std::ios::beg);
std::vector<char> buffer(length);
file.read(&buffer[0],length);
file.close();
HRESULT hr;
hr = DirectX::CreateWICTextureFromMemory(_D3D->GetDevice(), _D3D->GetDeviceContext(), (const uint8_t*)&buffer[0], sizeof(buffer), nullptr, &srv, NULL);
上述代码返回图像格式未知。
我很清楚在这里做错了什么,任何帮助,非常感谢。试图找到任何甚至类似的在stackoverflow和谷歌无济于事。
找不到哪个组件? – zdd