Ich habe einige Modelle (Geometrien), die eine Vertexinformation haben. Zum Beispiel Position, Normal, Farbe, Texkoord Jede dieser Informationen hat ihren eigenen Vertexpuffer. Aber einige dieser Modelle haben Texturkoordinaten einige nicht ... Um diese Unterschiede zu verwalten schrieb ich einen Vertexshader, der prüft, ob das Flag innerhalb des Konstantspuffers "hasTextureCoordinates" ist == 1. Und wenn ja, verwendet es den texcoord Parameter oder nicht . Aber Directx nicht wirklich wie dieses Problem zu umgehen und druckt:optionale vertexbufferobjects in directx11
D3D11 INFO: ID3D11DeviceContext :: Draw: Element [3] in der aktuellen Eingabe-Layout Erklärung Referenzen Eingabeschlitz 3, aber es gibt keinen Puffer dazu verpflichtet Slot. Dies ist in Ordnung, da Lesevorgänge von einem leeren Steckplatz als 0 definiert sind. Es ist auch möglich, dass der Entwickler weiß, dass die Daten trotzdem nicht verwendet werden. Dies ist nur ein Problem, wenn der Entwickler tatsächlich einen Eingabepuffer hier binden wollte. [EXECUTION INFO # 348: DEVICE_DRAW_VERTEX_BUFFER_NOT_SET]
Ich bin mir nicht sicher, ob alle Hardware dies richtig behandelt, auch nicht schön es ist in der Ausgabe dieser „Warnungen“ jedes Bild zu sehen ... Ich weiß, dass ich schreiben könnte, zwei Shader, eins mit und ohne Texcoods, aber das Problem ist, dass dies nicht der einzige vielleicht fehlende Parameter ist ... einige haben Farbe andere nicht, einige hat Farbe und Texturkoordinaten und so weiter. Und einen Shader für jede Kombination von Vertexpuffer-Eingaben zu schreiben, ist extrem redundant. Das ist extrem schlecht, denn wenn wir einen Shader ändern, müssen wir auch alle anderen ändern. Es gibt auch die Möglichkeit, Teile des Shaders in verschiedene Dateien zu legen und sie einzubinden, aber das ist verwirrend.
Gibt es eine Möglichkeit, directx zu sagen, dass der spezifische Vertexpuffer optional ist? Oder kennt jemand eine bessere Lösung für dieses Problem?
Sie denken also, dass diese Problemumgehung eine nette Möglichkeit ist, damit umzugehen? Oder gibt es bessere Möglichkeiten, das zu tun? – Thomas
Im Allgemeinen ist eine bessere Lösung, verschiedene Eingabe-Layout-Objekte zu haben. Mein Punkt ist, dass Sie die INFO-Nachrichten ohne große Angst unterdrücken können. –