Was sind die verschiedenen HLSL-sampler-Typen für?
Arbeite ich mit DX9/SM3 im moment, und die MSDN-Dokumentation auf HLSL-Sampler zu sein scheint, fehlt bei der Erklärung, wie die verschiedenen sampler-Typen. Was noch schlimmer ist, Sie versuchen zu decken DX9 und DX10 in einem einzigen Artikel, so dass Sie Durcheinander zusammen, alle keywords:
sampler Namen = SamplerType { Texture = <texture_variable>; [state_name = state_value;] ... };
...
SamplerType
[in] Der sampler-Typ, welche eine der folgenden ist: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.
Unterschiede zwischen Direct3D 9 und Direct3D 10:
Direct3D 10 unterstützt einen zusätzlichen sampler Typ: SamplerComparisonState.
Habe ich das Gefühl, dass Sie im Gegensatz zu diesem Kommentar, SamplerState
ist DX10 nur. Nahezu alle der code, den ich sehe, nutzt sampler_state
für SamplerType. Ein kurzes Beispiel aus BasicHLSL (DX9):
sampler MeshTextureSampler =
sampler_state
{
Texture = <g_MeshTexture>;
MipFilter = LINEAR;
MinFilter = LINEAR;
MagFilter = LINEAR;
};
Warum all die verschiedenen _SamplerType_s existieren und als würde Sie verwenden, sagen, sampler
oder sampler2D
statt sampler_state
? Sie müssen eindeutig sein beim abholen jedenfalls, z.B. tex2D
, texCUBE
, also, was ist hier Los?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du hast Recht. Das ist sehr seltsam.
Scheint es, als wenn die Dokumentation auf der DirectX-9-syntax ist falsch. Ich bin keineswegs ein Experte auf entweder HLSL oder DirectX, aber ich habe immer nur gesehen Sampler in DirectX 9 wird erklärt, wie diese:
Ich könnte etwas fehlt, sondern mir die oben genannten syntax macht mehr Sinn als die in der Dokumentation. Deklarieren Sie einen sampler mit einer bestimmten Typ, und es gibt den sampler state.
UPDATE: Anscheinend IST es falsch. Ich habe angefangen, ein thread in den offiziellen Foren und bisher hab ich nur bekommen eine Bestätigung, dass es falsch ist. Ich habe auch ne mail geschickt direkt auf die DirectX-team. Nur um auf der sicheren Seite.
sampler Name = SamplerType { Texture = ; [state_name = state_value;]};
Ist es richtig!!!!
Die Erklärung gilt nur für die Effekte.
EDIT: die offiziellen Foren sind auf der MSDN-Website. Du kannst auch einen Vorschlag oder ein Fehler mit "Community-Zugänge".