トップページ > 記事閲覧
サンプルシェーダープログラムについて
名前:nsawa 日時: 2016/06/16 19:24

こんにちは。DxLibを使って、ピクセルシェーダの勉強をさせて頂いています。 気になった点があり、報告させて頂きます。 「ピクセルシェーダのサンプルのexeをそのまま実行すれば動くのですが、サンプルソースをコンパイルすると動かない」という問題です。 具体的には、以下の通りです。 --- @「DxLib_VC/Tool/ShaderCompiler/Sample/PixelShaderTest.exe」をそのまま実行する。 ⇒結果○:正常に動作します。 A「DxLib_VC/Tool/ShaderCompiler/Sample/SamplePSCompile.bat」を実行して「SamplePS.pso」を再作成した後、「DxLib_VC/Tool/ShaderCompiler/Sample/PixelShaderTest.exe」をそのまま実行する。 ⇒結果○:正常に動作します。 BDXライブラリVer 3.16dを使って、「DxLib_VC/Tool/ShaderCompiler/Sample/PixelShaderTest.cpp」をコンパイルして、元からある「SamplePS.pso」を読み込ませて実行する。 ⇒結果×:キャラの絵が真っ白になります。LoadPixelShader()が-1を返していました。  デバッガで追いかけて見た所、DxGraphicsAPIWin.cppの  >hr = GAPIWin.D3D11DeviceObject->CreatePixelShader( pShaderBytecode, BytecodeLength, pClassLinkage, ppPixelShader ) ;  がエラーになっているようでした。 CDXライブラリVer 3.16dを使って、「DxLib_VC/Tool/ShaderCompiler/Sample/PixelShaderTest.cpp」をコンパイルし、Aで再作成した「SamplePS.pso」を読み込ませて実行する。 ⇒結果×:Bと同じ結果になりました。 DVS2015付属のfxc.exeで「fxc.exe SamplePS.fx /T ps_4_0 /Fo SamplePS.pso /Gec」として「SamplePS.pso」を再作成し、Cと同じ実行ファイルで読み込ませて実行する。 ⇒結果:○正常に動作しました。 --- まとめますと、 サンプルフォルダに入っている「PixelShaderTest.exe」をそのまま実行した場合は、PS2.0のピクセルシェーダを読み込んで実行できるのですが、 DxLib Ver 3.16dを使ってサンプルソースをビルドして実行すると、PS2.0のピクセルシェーダの読み込みに失敗するようでした。 上記Dのようにfxc.exeを使ってコンパイルすれば動作しましたので問題はないのですが、少々気になったため報告させて頂きました。 使用環境はWin10 64bit、GPUはGeForce735Mです。
メンテ

Page: 1 |

Re: サンプルシェーダープログラムについて ( No.1 )
名前:初期状態 日時:2016/06/17 21:21

おそらくDirectXのバージョンのせいではないでしょうか? サンプルプログラムのソースコードが書かれたころにはデフォルトでDirectX9が使用されるようになっていたのが 後のDXLibのアップデートでデフォルトがDirectX11を使うようになったため、シェーダーが読み込めなくなったのだと思います DXライブラリの初期化の前に、SetUseDirect3DVersion(DX_DIRECT3D_9EX)の記述を入れてみてください
メンテ
Re: サンプルシェーダープログラムについて ( No.2 )
名前:nsawa(解決) 日時:2016/06/18 10:20

こんにちは。コメントありがとうございます。 サンプルプログラムの、DXライブラリの初期化の前に、SetUseDirect3DVersion(DX_DIRECT3D_9EX)の記述を入れた所、上記のBCの場合も問題なく動作するようになりました。 また、SetUseDirect3DVersion()関数のリファレンスや、更新履歴の3.13eの説明を読んで、SetUseDirect3DVersion()が必要な理由も理解できました。 お教え頂き、ありがとうございました。
メンテ
Re: サンプルシェーダープログラムについて ( No.3 )
名前:管理人(解決) 日時:2016/06/18 19:45

すみません、サンプルプログラムにも SetUseDirect3DVersion( DX_DIRECT3D_9EX ); の記述を追加しました m(_ _;m
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存