2016-05-10 21 views
1

Mein Windows 8.1 System hat DirectX11 installiert, aber meine Grafikkarte ist DirectX 9. Ich versuche, SharpDX-Bibliotheken zu verwenden und einen "Parameter ist falsch" -Fehler beim Erstellen eines VertexShader-Objekts. HierFehler 0x80070057 Aufrufen von VertexShader für Direct3d11

ist, was ich versucht habe

  1. Lauf Directx 9 und diese Bibliotheken statt verwenden. Microsoft erlaubt jetzt nicht den Download von DirectX 9-Bibliotheken von ihrer Website.

  2. Ausführung mit Software-Emulation. Dies ist eine frühe Entwicklung, daher bin ich mit dieser Software-Emulation in diesem Stadium einverstanden. Dieser Versuch ist mit einem anderen Fehler fehlgeschlagen.

Der Anruf ist das. d3dDevice und vertexShaderByteCode sind nicht-null

 new D3D11.VertexShader(d3dDevice, vertexShaderByteCode); 

Frage 0. Gibt es eine Möglichkeit zu erkennen, welche Parameter es nicht mag? Ich benutze Tutorial-Code, der theoretisch funktioniert.

Frage 1. Kommt der Fehler von der Grafikkarte?

Frage 2. Ist das ein bekanntes Problem?

Dank,

john

Antwort

1

Wenn Sie die Direct3D-Debug-Layer aktivieren, sollten Sie mehr Informationen darüber, warum der Anruf fehlgeschlagen bekommen.

Wie lautet der Name Ihrer Grafikkarte? Was Direct3D hardware feature level ist deine Videokarte? 9.1, 9.2, 9.3? Sie können dies überprüfen, indem Sie dxcapsviewer über eine Visual Studio-Eingabeaufforderung ausführen. DirectX 11 kann 9.1 - 12.1 Feature-Level unterstützen, daher ist es ziemlich wahrscheinlich, dass zumindest einige Funktionen auf Ihrer Hardware funktionieren.

+0

Vielen Dank. Ich habe 2 NVIDIA Quadro 440. Sie unterstützen 9. Sie sind keine Spielkarten per se, aber ich versuche nur, die Software zum Laufen zu bringen. Wie aktiviere ich die Debug-Ebene? –

+0

Das sollte Feature Level 9.3 wahrscheinlich unterstützen, aber Sie sollten das überprüfen. Hinweise zu C++ auf der Debug-Ebene finden Sie in [MSDN] (https://msdn.microsoft.com/en-us/library/windows/desktop/jj200584.aspx). Für SharpDX würden Sie '' SharpDX.Direct3D11.DeviceCreationFlags.Debug'' verwenden. –

+0

Ich bin nicht klar, wie die Debugging-Ebene funktioniert. Soll es Zeug in das Ausgabefenster für Visual Studio erzeugen? Ich sehe dort nichts anderes als die Tatsache, dass es eine Ausnahme gab. Ich denke, ich vermisse das große Bild, wie es benutzt wurde –

1

Ich fand es heraus. Ich habe Beispielcode für DirectX 11 verwendet und die Version des Pixel- und Vertex-Shaders war mit der DirectX 9-Karte, die ich hatte, nicht kompatibel. Im Aufruf zum Kompilieren des Shaders war die Version des Pixelshaders ps_5_0, ich brauchte ps_4_0_level_9_1, die Version des Vertexshaders war vs_5_0 und ich brauchte vs__4_0_level_9_1. Das 'ungültige Argument' war der kompilierte Shader-Code.