2009-08-19 10 views
9

Pracuję obecnie z DX9/SM3, a dokumentacja MSDN na HLSL samplers wydaje się być bardzo obca w wyjaśnieniu, w jaki sposób używać różnych typów samplerów. Co gorsze jest to, że starają się pokryć DX9 i DX10 w jednym artykule, więc jumble razem wszystkie słowa kluczowe:Do czego służą różne typy próbników HLSL?

próbnika Nazwa = SamplerType {Texture = < texture_variable>; [nazwa stanu = wartość stanu;] ...};

...

SamplerType

[w] Typ próbnik, który jest jednym z następujących: próbnik, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

Różnice Direct3D 9 i Direct3D 10:

Direct3D 10 obsługuje jeden dodatkowy typ próbnika: SamplerComparisonState.

mam wrażenie, że w przeciwieństwie do tego writeup, SamplerState jest tylko DX10. Praktycznie cały kod, który widzę, używa sampler_state dla SamplerType. Szybki przykład z BasicHLSL (DX9):

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

Dlaczego istnieją wszystkie inne _SamplerType_s i kiedy należałoby użyć, powiedzmy, sampler lub sampler2D zamiast sampler_state? Podczas pobierania musisz się wyraźnie informować, np. tex2D, texCUBE, więc co się tutaj dzieje?

Odpowiedz

4

Masz rację. To bardzo dziwne.

Wygląda na to, że dokumentacja w składni DirectX 9 jest niepoprawna. Jestem bynajmniej ekspertem w obu HLSL lub DirectX, ale zawsze tylko widział samplery w DirectX 9 zadeklarowane tak:

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

I może być brakuje czegoś, ale dla mnie powyżej składnia sprawia więcej sensie niż ten w dokumentacji. Deklarujesz próbnik z danym typem i określa on stan samplera.

AKTUALIZACJA: Najwyraźniej jest źle. Zacząłem a thread on the official forums i do tej pory dostałem tylko potwierdzenie, że jest ono złe. Wysłałem również pocztę bezpośrednio do zespołu DirectX. Po prostu być po bezpiecznej stronie.

+2

Ostrzegam, [email protected] nie jest aktywnie monitorowany. – Goz

+0

Nie wiedziałem tego, dzięki. Cóż, oceniłem i przesłałem opinię do artykułu, więc może to zadziała. – Tchami

+0

Dzięki, cieszę się, że nie straciłem tego. Udało mi się wydobyć moje stare DX9 CHM i miał znacznie czystszy artykuł. DX9 obsługuje nawet tablice próbników, ale nigdy nie wiadomo, od nowo spartaczonej strony MSDN. –

0

Nazwa próbnika = SamplerType {Texture =; [state_name = state_value;]};

To prawda! Deklaracja jest ważna tylko dla efektów.

EDYCJA: oficjalne fora są w witrynie MSDN. Możesz opublikować sugestię lub błąd za pomocą "Dodatków do Społeczności".

Powiązane problemy