提示画像の通り提示コードをピクセルシェーダーをコンパイルする際にコマンドを実行すると以下のようなエラーがでます。Google翻訳に入れてみたことろ vs_2_0ターゲットはテクスチャルックアップをサポートしていません という意味らしいです。何をすればいいのでしょうか?
頂点シェーダーは/Tvs_5_0 オプションを追加してコンパイルできたみたいです。
fxc.exeとはhlslのシェーダーコンパイラです。 自分の場合のパス: C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86
です。
HLSL
1 2// ピクセルシェーダーの入力 3struct PS_INPUT 4{ 5 float4 Diffuse : COLOR0 ; 6 float4 Specular : COLOR1 ; 7 float2 TexCoords0 : TEXCOORD0 ; 8} ; 9 10// ピクセルシェーダーの出力 11struct PS_OUTPUT 12{ 13 float4 Color0 : COLOR0 ; 14} ; 15 16 17// C++ 側で設定するテクスチャの定義 18sampler DiffuseMapTexture : register( s0 ) ; // ディフューズマップテクスチャ 19float4 cfFactorColor : register( c5 ) ; // 不透明度等 20 21 22 23// main関数 24PS_OUTPUT main( PS_INPUT PSInput ) 25{ 26 PS_OUTPUT PSOutput; 27 float4 TextureDiffuseColor ; 28 29 // テクスチャカラーの読み込み 30 TextureDiffuseColor = tex2D( DiffuseMapTexture, PSInput.TexCoords0.xy ) ; 31 32 // 出力カラー = ディフューズカラー * テクスチャカラー + スペキュラカラー 33 PSOutput.Color0 = PSInput.Diffuse * TextureDiffuseColor + PSInput.Specular ; 34 35 // 出力アルファ = ディフューズアルファ * テクスチャアルファ * 不透明度 36 PSOutput.Color0.a = PSInput.Diffuse.a * TextureDiffuseColor.a * cfFactorColor.a ; 37 38 // 出力パラメータを返す 39 return PSOutput ; 40}
fxc.exe とはなんでしょうか
プログラムを見る限り、HLSLではなくGLSLですね。
HTSLシェーダーコンパイラです。パスはこちらです C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86
なるほどでは構文等はGLSLで調べることにしました。
DXライブラリの場合はHLSLではなくGLSLです。ややこしいですが、お間違えの無いようにお願い致します。
ではこの質問はGLSLをHLSLでコンパイルしようとしているという問題でいいのでしょうか?
DirectXを真似たというわりにはシェーダーはGLSLのままという可愛らしいミスをしていらっしゃるので、多分その認識で合っていると思います。結論から言いますと、今のソースコードのままではコンパイル不可能です。GLSLに書き直しが必要ですね。
あなたの回答
tips
プレビュー