Hallo,
da ich MS Visual Studio 2012 benutze, wollte ich bei meiner kleinen Engine auch gleich das Laden eines fertig kompilierten Shaders (.cso) und das Übergeben an Directx implementieren.
Um die Datei zu Laden, hatte ich einen Binären ifstream erzeugt, der die Datei läd und in einem char Array abspeichert. Mit diesem wird dann ein ID3D10Blob* ertellt:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
ifstream shader("shaders.cso", std::ios::in | std::ios::binary | std::ios::ate);
size_t fileSize = shader.tellg();
shader.seekg(0, std::ios::beg);
char* data = new char[fileSize];
shader.read(data, fileSize);
shader.close();
D3D10CreateBlob(sizeof(data), &effectBlob);
delete[] data;
|
Jetzt muss ich ja laut Dokumentation von Microsoft den Shader an Directx übergeben, und zwar unter anderem mit PSSetShader.
Dafür benötigt man allerdings eine ID3D11Resource* die mit D3D11_BIND_SHADER_RESOURCE erstellt wurde.
Wie komme ich vom Blob zur Resource? Oder mache ich etwas komplett falsch?