Hello, i try to generate texture progrmically. Everything looks good, but when I save texture to file I'm disappointed. I expected red texture but i got this:
Code:
bool ModelData::createDefaultMaterial()
{
struct Pix
{
float r,g,b,a;
};
Pix* img;
img=new Pix[256*256];
for(int y=0;y<128;y++)for(int x=0;x<256;x++){img[y*256+x].r=1.0;img[y*256+x].g=0.0;img[y*256+x].b=0.0;img[y*256+x].a=1.0;}
D3D11_TEXTURE2D_DESC desc;
ZeroMemory( &desc, sizeof(desc));
desc.Width = 256;
desc.Height = 256;
desc.MipLevels = desc.ArraySize = 1;
desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
desc.SampleDesc.Count = 1;
desc.Usage = D3D11_USAGE_DYNAMIC;
desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
ID3D11Texture2D *pTexture = NULL;
engine.d3d11Device->CreateTexture2D( &desc, NULL, &pTexture );
D3D11_MAPPED_SUBRESOURCE mapResource;
engine.d3d11DevCon->Map(pTexture,0,D3D11_MAP_WRITE_DISCARD,0,&mapResource);
BYTE* mappedData = reinterpret_cast<BYTE*>(mapResource.pData);
memcpy(mappedData, img, 256*256*4);
engine.d3d11DevCon->Unmap(pTexture, 0);
D3DX11SaveTextureToFile(engine.d3d11DevCon,pTexture,D3DX11_IFF_PNG,L"nazwaa.png");
return TRUE;
}