私は現在 DX9/SM3 を使用していますが、HLSL サンプラーに関する MSDN ドキュメントには、さまざまなサンプラー タイプの使用方法の説明が非常に不足しているようです。さらに悪いことに、彼らは DX9 と DX10 を 1 つの記事でカバーしようとしているため、すべてのキーワードがごちゃまぜになっています。
sampler Name = SamplerType { Texture = < texture_variable >; [状態名=状態値;] ... };
...
サンプラーの種類
[in] 次のいずれかであるサンプラーの種類: sampler、sampler1D、sampler2D、sampler3D、samplerCUBE、sampler_state、SamplerState。
Direct3D 9 と Direct3D 10 の違い:
Direct3D 10 は、1 つの追加のサンプラー タイプをサポートします: SamplerComparisonState。
この書き込みに反して、SamplerState
DX10のみのような気がします。私が目にする事実上すべてのコードは、 SamplerType を使用sampler_state
しています。BasicHLSL (DX9) からの簡単な例:
sampler MeshTextureSampler =
sampler_state
{
Texture = <g_MeshTexture>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
sampler
さまざまな_SamplerType_s がすべて存在するのはなぜsampler2D
ですかsampler_state
。とにかくフェッチするときは明示的である必要があります。たとえばtex2D
、texCUBE
、では、ここで何が起こっているのでしょうか?