Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.09.2013, 19:24

[Gelöst][Direct11] Binäre Shaderdatei laden und an Directx übergeben

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? ?(

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SuperManitu« (17.09.2013, 18:23)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

16.09.2013, 19:42

Geht das nicht mit CreatePixelShader (bzw. je nach Shader-Typ einer anderen Methode)?
http://msdn.microsoft.com/de-de/library/…1(v=vs.85).aspx

3

16.09.2013, 19:49

Das heißt ich muss zwei Shaderdateien anlegen, ich habe keine Funktion zum Laden der Beiden auf einmal gefunden, oder?

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

4

16.09.2013, 20:08

Ja, ich meine, das heißt es. Falls man mehere Shader in eine cso packen könnte, wäre ich daran auch interessiert.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

5

16.09.2013, 20:10

OK, danke für die Antwort.

Werbeanzeige