こんにちは。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です。