2016-05-10 4 views
1

私のWindows 8.1システムにDirectx11がインストールされていますが、ビデオカードがDirectx 9です。SharpDXライブラリを使用しようとしていて、VertexShaderオブジェクトを上書きする際にパラメータが正しくありません。ここで エラー0x80070057 Direct3d11のVertexShaderを呼び出す

は、私はDirectX 9の実行と代わりにこれらのライブラリを使用して

  1. を試してみたものです。マイクロソフトでは現在、WebサイトからDirectX 9ライブラリのダウンロードを許可していません。

  2. ソフトウェアエミュレーションを使用して実行しています。これは初期段階の開発なので、私はこの段階でのソフトウェアエミュレーションで大丈夫です。この試行は別のエラーで失敗しました。

コールはこれです。 d3dDeviceとvertexShaderByteCodeは

 new D3D11.VertexShader(d3dDevice, vertexShaderByteCode); 

nullで質問0それは好きではない何のパラメータを識別する方法はありますか?私は理論的に働いたチュートリアルコードを使用しています。

質問1.エラーはビデオカードから発生していますか?

質問2これは既知の問題ですか?

おかげで、

ジョン

答えて

1

あなたはDirect3Dのデバッグレイヤーを有効にする場合は、呼び出しが失敗した理由に関する詳細な情報を取得する必要があります。

ビデオカードの名前は何ですか?何がDirect3D hardware feature levelあなたのビデオカードですか? 9.1、9.2、9.3、 Visual Studioのコマンドプロンプトからdxcapsviewerを実行して確認できます。 DirectX 11は9.1 - 12.1の機能レベルをサポートしているので、少なくともいくつかの機能がハードウェア上で動作する可能性が非常に高いです。

+0

ありがとうございます。私は2つのNVIDIA quadro 440を持っています。彼らは9.をサポートしています。彼らはゲームカード自体ではありませんが、私はソフトウェアを稼動させようとしています。デバッグレイヤを有効にするにはどうすればよいですか? –

+0

これはおそらくFeature Level 9.3をサポートするはずですが、それを確認する必要があります。デバッグレイヤのC++命令については、[MSDN](https://msdn.microsoft.com/en-us/library/windows/desktop/jj200584.aspx)を参照してください。 SharpDXでは '' SharpDX.Direct3D11.DeviceCreationFlags.Debug''を使います。 –

+0

デバッグレイヤの仕組みが明確ではありません。 Visual Studioの出力ウィンドウに何かを生成するはずですか?私は例外があったという事実以外に役立つものは何も見ません。私はその使用方法の大きな写真が欠けていると思う –

1

私はそれを理解しました。私はDirectX 11のサンプルコードを使用していましたが、ピクセルのバージョンと頂点シェーダは、私が持っていたDirectX 9カードと互換性がありませんでした。シェーダをコンパイルするための呼び出しで、ピクセルシェーダのバージョンはps_5_0、ps_4_0_level_9_1が必要でした。頂点シェーダのバージョンはvs_5_0で、vs__4_0_level_9_1が必要でした。 「無効な引数」は、コンパイルされたシェーダコードです。

関連する問題