Sign in to follow this  
NotTakenSN

Loading Precompiled Shader?

Recommended Posts

NotTakenSN    149
I'm trying to remove the effects pipeline from my program and have realized that I have no idea how to load a precompiled shader without the effects functions. I've found example code that uses D3DReadFileToBlob, but that is only available in the Windows 8 SDK (I'm using the June 2010 SDK). I've even tried linking to the d3dcompiler.lib in the Windows 8 SDK, but still can't use the function. Right now, I'm attempting to read in the file through std::ifstream into a std::vector<char>, then use CreateVertexShader(). Is this the right way to go? Also, how do I set up the input layout afterwards? Most of the examples I see store the byte code in a ID3DBlob, so they are able to use ID3DBlob::GetBufferPointer() to retrieve the void *pShaderBytecodeWithInputSignature required in the CreateInputLayout() function. My byte code is stored in a vector<char>, so how do I do this? Can I create a ID3DBlob from a vector<char>?

Share this post


Link to post
Share on other sites
kunos    2254
I save on the file the size of the blob then the blob itself. Then read like this straight into the blob:
in.read((char*)vs_blob->GetBufferPointer() , vs_size);

After that, once you have the blob, you go on creating your shader as usual.

Share this post


Link to post
Share on other sites
~Helgon    361
Hi, im doing it this way:

filename is for example: L"Shadows.cso" (or what ever format you have, maybe .fxo)
mFX is : ID3DX11Effect* mFX;

[CODE]
std::ifstream fin(filename, std::ios::binary);
fin.seekg(0, std::ios_base::end);
int size = (int)fin.tellg();
fin.seekg(0, std::ios_base::beg);
std::vector<char> compiledShader(size);
fin.read(&amp;amp;amp;compiledShader[0], size);
fin.close();

D3DX11CreateEffectFromMemory(&compiledShader[0], size, 0, device, &mFX);
[/CODE]

Regards Edited by ~Helgon

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this