2009-08-19 17 views
9

私は現時点でDX9/SM3で作業していますが、HLSL samplersのMSDNドキュメントには、さまざまなサンプラーの種類の使い方が説明されていないようです。さらに悪いのは、それらが単一の記事でDX9とDX10をカバーしようとしているので、彼らは一緒にすべてのキーワードまぜこぜ:HLSLサンプラーのタイプはどれくらい異なりますか?

サンプラー名を = SamplerType {テクスチャ= < texture_variable>。 [state_name = state_value;] ...};

...

SamplerType

以下のいずれかであるサンプラタイプ、[IN]:サンプラーsampler1Dsampler2Dサンプラー3D,サンプラーCUBE,サンプラー状態,サンプラー状態。 Direct3Dの9とDirect3D 10の間

違い:SamplerComparisonState

Direct3Dの10つの追加のサンプラ・タイプをサポートします。

私は、この文書に反し、SamplerStateだけDX10であること感覚を得ます。ほぼすべてのコードは、のサンプラータイプsampler_stateを使用しています。 BasicHLSL(DX9)からの簡単な例:

sampler MeshTextureSampler = 
sampler_state 
{ 
    Texture = <g_MeshTexture>; 
    MipFilter = LINEAR; 
    MinFilter = LINEAR; 
    MagFilter = LINEAR; 
}; 

がなぜ、すべての異なる_SamplerType_sが存在しないと、あなたが使用する際に、言う、代わりにsampler_statesamplerまたはsampler2D?何かを取得するときは明示的にする必要があります。 tex2DtexCUBE、ここで何が起こっていますか?

答えて

4

あなたはそうです。それは非常に奇妙です。

DirectX 9の構文の説明が間違っているようです。私は決してHLSLまたはDirectXのいずれかの専門家だけど、私はいつものみのDirectX 9でサンプラーは、このように宣言されて見てきました:私は上記の構文は、より多くのを作る私に何かを欠落している可能性があり

SamplerType Name = sampler_state{ Texture = <texture_variable>; [state_name = state_value;] ... }; 

感覚はドキュメントのものよりも重要です。指定された型のサンプラーを宣言し、サンプラーの状態を指定します。

更新日:明らかに間違っています。私はa thread on the official forumsを始めました、そして、これまで私は間違っているという確認を得ました。またDirectXチームに直接メールを送ってきました。ちょうど安全な側にいること。

+2

警告:[email protected]は積極的に監視されていません。 – Goz

+0

それを知りませんでした、ありがとう。まあ、私も評価し、問題の記事にフィードバックを提供したので、おそらくうまくいくでしょう。 – Tchami

+0

ありがとう、私はそれを失っていないとうれしい。私は古いDX9 CHMを見つけ出しました。 DX9はサンプラー配列もサポートしていますが、MSDNのページではそれを知らないでしょう。 –

0

sampler Name = SamplerType {Texture =; [state_name = state_value;]};

正しいです! 宣言はエフェクトに対してのみ有効です。

EDIT:公式フォーラムはMSDNにあります。 「コミュニティの追加」を使用して、提案やエラーを投稿することができます。

関連する問題