2009-08-19 9 views
9

Je travaille actuellement avec DX9/SM3, et la documentation MSDN sur HLSL samplers semble manquer cruellement d'expliquer comment utiliser les différents types d'échantillonneurs. Ce qui est pire est qu'ils essaient de couvrir DX9 et DX10 dans un seul article, ils pêle-mêle ensemble tous les mots-clés:Quels sont les différents types d'échantillonneurs HLSL?

sampler Nom = SamplerType {Texture = < texture_variable>; [nom_état = valeur_état;] ...};

...

SamplerType

[en] Le type d'échantillonnage, qui est l'un des éléments suivants: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

différences entre Direct3D 9 et Direct3D 10:

Direct3D 10 supporte un type d'échantillonnage supplémentaire: SamplerComparisonState.

J'ai le sentiment que, contrairement à ce writeup, SamplerState est DX10 seulement. Pratiquement tout le code que je vois utilise sampler_state pour SamplerType. Un exemple rapide de BasicHLSL (DX9):

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

Pourquoi tous les différents _SamplerType_s existent et, par exemple quand utiliseriez-vous, ou samplersampler2D au lieu de sampler_state? Vous devez être explicite lors de la récupération de toute façon, par ex. tex2D, texCUBE, alors qu'est-ce qui se passe ici?

Répondre

4

Vous avez raison. C'est très étrange.

Il semble que la documentation sur la syntaxe DirectX 9 est incorrecte. Je ne suis absolument pas un expert de chaque HLSL ou DirectX, mais je ne l'ai toujours vu échantillonneurs en DirectX 9 étant déclarés comme ceci:

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

je pourrais manquer quelque chose, mais pour moi la syntaxe ci-dessus fait plus sens que celui de la documentation. Vous déclarez un échantillonneur avec un type donné et spécifie l'état de l'échantillonneur.

MISE À JOUR: Apparemment, il est faux. J'ai commencé a thread on the official forums et jusqu'ici j'ai seulement obtenu une confirmation que c'est faux. J'ai également envoyé un mail directement à l'équipe DirectX. Juste pour être sur le côté sécuritaire.

+2

Soyez prévenu, [email protected] n'est pas surveillé activement. – Goz

+0

Je ne le savais pas, merci. Eh bien, j'ai également noté et fourni des commentaires à l'article en question, alors peut-être que cela va fonctionner. – Tchami

+0

Merci, je suis content de ne pas l'avoir perdu. J'ai réussi à déterrer mon vieux DX9 CHM et il y avait un article beaucoup plus propre. DX9 prend même en charge les baies d'échantillonneurs, mais vous ne le sauriez jamais à partir de la page MSDN nouvellement bâclée. –

0

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

C'est correct! La déclaration est valide uniquement pour les effets.

EDIT: les forums officiels sont sur MSDN. Vous pouvez poster une suggestion ou une erreur en utilisant "Community Additions".

Questions connexes