3

最近、Visual Studio2012Ultimateに更新しました。以前はDirectX11June 2010 SDKでプログラミングしていたので、引き続きVisual Studio 2012を使用してプログラミングしたいと思います。しかし、VS2012には独自のDirectX SDK(Windows Kit 8.0)が付属しており、コードを移行しようとしています。新しいバージョンのd3d11を使用します。プロジェクトでエフェクトファイル(.fxファイル)を使おうとするまで、すべてうまくいきました。VS2012を使用してDirectXSDKでEffects11サンプルをコンパイルし、プロジェクトのlibファイルをリンクする必要がありました。それもうまくいきました。ただし、プロジェクトをコンパイルすると、関数D3DX11CreateEffectFromMemoryはを返しますE_NOINTERFACE error (no such interface is supported)。なぜだか教えてもらえますか?Windowsキットのd3d11.libとd3dx11.libDirectXSDKから。たぶん私はそれらを混ぜるべきではありませんか?ただし、エフェクトファイルの作成を除いて、それらをミックスすると、他のすべてが正常に機能します。

どんな助けでもいただければ幸いです。

PSこれが役立つかどうかはわかりませんが、プロジェクト設定にライブラリディレクトリを追加する"DirectXSDKInstallPath\lib\x86\"と機能します。何故ですか?古いバージョンのライブラリを使用しているということですか?これにより、winerror.hの再定義されたヘッダーに関する大量の警告が表示されます。

4

4 に答える 4

1

D3DXライブラリは、DirectX 11の最新バージョン(Windows 8)では非推奨になりました。http://msdn.microsoft.com/en-us/library/windows/desktop/bb172965(v=vs.85).aspxを参照してください

エフェクトは別の方法で処理されるようになりました。独自のライブラリをプログラムして、エフェクトをロードしたり、DirectXツールキット(DirectXTK)を使用したりできます:http://directxtk.codeplex.com/

Microsoftは、自社のWebサイトでこのツールキットを推奨しています。詳細については、 http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275.aspxを参照してください。

于 2013-01-10T20:39:56.080 に答える
1

Effect11はhttps://fx11.codeplex.com/に移動しました。コンパイルして、自分でリンクする必要があります。

DirectXTKは、effect11インターフェースを提供しませんが、簡略化された効果のみを提供します

于 2013-09-19T02:26:43.720 に答える
0

これは、おそらくd3dライブラリの競合が原因です。

使用しているd3dライブラリを確認してください。2つの異なるd3dライブラリがあるためです。

1つはDXSDK_DIR\Lib \x86または\x64にあり、もう1つはc:\ program files(x86?)\MicrosoftSDKにあります。

DXSDKを使用している場合は、Microsoft SDKのincludes、libsディレクトリの前に$(DXSDK_DIR)Include $(DXSDK_DIR)Lib\x86をそれぞれ[インクルードディレクトリ]フィールドと[ライブラリディレクトリ]フィールドに渡します。

于 2013-10-24T03:51:03.040 に答える
0

以前のバージョンのDirect3Dでは、D3D10ライブラリにリンクすると、エフェクトフレームワークはそのままで機能していました。Direct3D 11では、エフェクトフレームワークがD3DXライブラリに移動され、別のヘッダーファイル(d3dx11Effect.h)をインクルードし、別のライブラリ(リリースビルドの場合はD3DX11Effects.lib、デバッグビルドの場合はD3DX11EffectsD.lib)にリンクする必要があります。

さらに、Direct3D 11では、エフェクトライブラリコードの完全なソースコード(DirectX SDK \ Samples \ C ++ \ Effects11)が提供されます。したがって、自分のニーズに合わせてエフェクトフレームワークを変更できます。この本では、エフェクトフレームワークをそのまま使用し、変更は加えません。ライブラリを使用するには、最初にリリースモードとデバッグモードの両方でEffects11プロジェクトをビルドして、D3DX11Effects.libおよびD3DX11EffectsD.libfilesを生成する必要があります。エフェクトフレームワークが更新されない限り、これを行う必要があるのは1回だけです(たとえば、DirectX SDKの新しいバージョンがこれらのファイルを更新する可能性があるため、.libファイルを再構築して最新バージョンを取得することをお勧めします)。d3dx11Effect.hヘッダーファイルは、DirectX SDK \ Samples \ C ++ \ Effects11\Incにあります。

サンプルプロジェクトでは、d3dx11Effect.h、D3DX11EffectsD.lib、およびD3DX11Effects.libfilesを、すべてのプロジェクトがコードを共有するCommondirectoryに配置します(サンプルプロジェクト組織の説明については、「はじめに」を参照してください)。

于 2016-04-29T01:58:07.827 に答える