I'm trying to implement a color gradient post effect that uses the final framebuffer color to index into a 3d texture cube for remapping the color. Currently I'm struggling to load the texture so that I get a 3D texture shader resource view out of it. The source texture is a 1024 x 32 png texture representing a 32x32x32 color cube.
I get the file loaded into memory (from my own file handling system) and then use D3DX11GetImageInfoFromMemory to get the texture resolution (will get saved into a D3DX11_IMAGE_INFO structure, named rImageInfo in the code snippet below).
I then tried to use D3DX11CreateShaderResourceViewFromMemory to create a 3d texture shader resource view.
D3DX11_IMAGE_LOAD_INFO rImageLoadInfo; rImageLoadInfo.Depth = p_iColumns * p_iRows; rImageLoadInfo.Width = rImageInfo.Width / p_iColumns; rImageLoadInfo.Height = rImageInfo.Height / p_iRows; rImageLoadInfo.FirstMipLevel = 0; rImageLoadInfo.MipLevels = 1; rImageLoadInfo.Usage = D3D11_USAGE_DEFAULT; rImageLoadInfo.BindFlags = D3D11_BIND_SHADER_RESOURCE; rImageLoadInfo.CpuAccessFlags = 0; rImageLoadInfo.MiscFlags = 0; rImageLoadInfo.Format = rImageInfo.Format; rImageLoadInfo.Filter = D3DX11_DEFAULT; rImageLoadInfo.MipFilter = D3DX11_DEFAULT; rImageLoadInfo.pSrcInfo = &rImageInfo; hr = D3DX11CreateShaderResourceViewFromMemory(pD3D11Device, pDataBuffer, (tUInt32)iFileSize, &rImageLoadInfo, NULL, &pShaderResourceView, NULL);
I end up with this D3D error message:
D3DX11: Depth resampling can only be performed on D3D11_RESOURCE_DIMENSION_TEXTURE3D textures. Check LoadInfo.Depth, make sure it's 1 or D3DX11_FROM_FILE.
Does somebody know how to do this correctly? How do you guys load 3d textures?






