Hi guys!
Just a small (I hope) question, why does this provide troubles for my driver? I'm basically sending a 1D Texture to my shader, here's how I do it:
Creating the texture.
ilInit();
// Load image from DevIL
ILuint idImage;
ilGenImages( 1, &idImage );
ilBindImage( idImage );
ilLoadImage( filePath.c_str() );
_ASSERT ( IL_NO_ERROR == ilGetError() );
// Fetch dimensions of image
int width = ilGetInteger( IL_IMAGE_WIDTH );
int height = ilGetInteger( IL_IMAGE_HEIGHT );
// Load the data
ilConvertImage( IL_RGBA,IL_UNSIGNED_BYTE );
unsigned char * pData = ilGetData();
// Build the texture header descriptor
D3D11_TEXTURE1D_DESC descTex;
descTex.Width = width;
descTex.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
descTex.Usage = D3D11_USAGE_DEFAULT;
descTex.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET;
descTex.CPUAccessFlags = 0;
descTex.MipLevels = 1;
descTex.ArraySize = 1;
descTex.MiscFlags = D3D11_RESOURCE_MISC_GENERATE_MIPS;
// Resource data descriptor
D3D11_SUBRESOURCE_DATA data ;
memset( &data, 0, sizeof(D3D11_SUBRESOURCE_DATA));
data.pSysMem = pData;
data.SysMemPitch = 4 * width;
// Create the 2d texture from data
ID3D11Texture1D * pTexture = NULL;
HV( pDevice->CreateTexture1D( &descTex, &data, &pTexture ));
// Create resource view descriptor
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc;
srvDesc.Format = descTex.Format;
srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE1D;
srvDesc.Texture1D.MostDetailedMip = 0;
srvDesc.Texture1D.MipLevels = D3D11_RESOURCE_MISC_GENERATE_MIPS;
// Create the shader resource view
HV( pDevice->CreateShaderResourceView( pTexture, &srvDesc, &pSRV ));
// Delete from IL buffer after image loaded correctly
ilDeleteImages( 1, &idImage );
idImage = 0;
Sending it:
devcon->PSSetShaderResources(1, 1, &LineColors.pTexture);
Receiving it:
Texture1D t_lensColors : register(t1);
Now what on earth have I done wrong? Again...
-MIGI0027