Problem with creating "blanc" ID3D11Texture2D

Started by
0 comments, last by kolarz3 10 years, 2 months ago

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:

qrer.png

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;
}
Advertisement

bool ModelData::createDefaultMaterial()
{
	struct Pix
	{
		float r,g,b,a;
	};
	Pix* img;
	img=new Pix[256*256];

	for(int y=0;y<256;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_R32G32B32A32_FLOAT; 
	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*sizeof(float));
	engine.d3d11DevCon->Unmap(pTexture, 0);
	D3DX11SaveTextureToFile(engine.d3d11DevCon,pTexture,D3DX11_IFF_PNG,L"nazwaa.png");
	return TRUE;
}

Problem is solved. I must change Format to DXGI_FORMAT_R32G32B32A32_FLOAT

This topic is closed to new replies.

Advertisement