Frage

Ich bin writting ein kleines Grafikprogramm directx9 verwendet, die Importe einige Modelldateien aus .x-Dateien mit Blender erstellt. So weit so gut.

Die Modelle haben Materialien, die Texturen und es ist einfach haben die Texturnamen zu bekommen und richtig die Objekte machen aber Ich mag würde anderen Effekt (Shader) Dateien auf einige der Materialien verwenden, aber ich kann keinen Weg finden, um die Informationen über einzubetten, was Shader in dem Modell in der .x-Datei zu verwenden.

Die beste Idee, die ich hatte, war an der Textur Dateinamen in meiner D3D9 Anwendung zu suchen und eine Verweistabelle der Textur Namen Effektdatei codiert. Aber das scheint nicht elegant, und auch bedeutet, dass ich am Ende würde das Kopieren und Texturen Umbenennung nur so konnte ich die gleiche Textur mit verschiedenen Shadern verwenden.

Ich glaube, ich muss einen einfacheren Weg fehlt, dies zu tun, irgendwelche Vorschläge?

War es hilfreich?

Lösung

Im Gegensatz zu Textur-Bilddateien, ein Shader-Programm überschrieben werden können sehr kompliziert sein. Sie müssen den Shader-Text sowie die Spezifikationen für die Parameter benötigt es und einen Weg für wer auch immer die Datei liest, welche Werte zu Satz für die Parameter zu kennen und wie. Einige Shadern erfordern wiederum Texturen ein Parameter und manchmal braucht diese texutres von der Anwendung generiert werden (zum Beispiel im Fall eines Perlin Geräusch 3D-Textur).
Kurz gesagt, gibt es keine Möglichkeit, mit einem Standard-Weg zu kommen, um allgemein Shadern angeben, die vollständig in einem Dateiformat wie .x integreted werden können. Ihre einzige Wahl ist mit etwas Ad-hoc für Ihre Anwendung zu kommen. Die Methode, die Sie in der Frage vorschlagen, ist so gut wie jeder andere.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top