2009-08-19 45 views
9

Estoy trabajando con DX9/SM3 por el momento, y la documentación de MSDN en HLSL samplers parece ser muy deficiente para explicar cómo usar los diferentes tipos de muestreador. Lo peor es que tratan de cubrir DX9 y DX10 en un solo artículo, por lo que emburujar todas las palabras clave:¿Para qué sirven los diferentes tipos de muestras HLSL?

sampler Nombre = SamplerType {Textura = < texture_variable>; [state_name = state_value;] ...};

...

SamplerType

[en] El tipo de muestras, que es uno de los siguientes: sampler, sampler1D, sampler2D, sampler3D, samplerCUBE, sampler_state, SamplerState.

Diferencias entre Direct3D 9 y Direct3D 10:

Direct3D 10 soporta un segundo tipo de toma de muestras: SamplerComparisonState.

tengo la sensación de que, contrariamente a esta valoración crítica, es SamplerState DX10 solamente. Prácticamente todo el código que veo usa sampler_state para SamplerType. Un ejemplo rápido de BasicHLSL (DX9):

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

¿Por qué existen todas las diferentes _SamplerType_s y cuándo se usa, por ejemplo, sampler o sampler2D en lugar de sampler_state? Debe ser explícito cuando busque de alguna manera, p. tex2D, texCUBE, entonces, ¿qué está pasando aquí?

Respuesta

4

Tienes razón. Eso es muy extraño.

Parece que la documentación de la sintaxis de DirectX 9 es incorrecta. Estoy de ninguna manera un experto en cualquiera HLSL o DirectX, pero siempre he visto solamente muestreadores en DirectX 9 se declararon como esto:

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

puede ser que falte algo, pero me la sintaxis anterior hace más sentido que el de la documentación. Usted declara un muestreador con un tipo determinado y especifica el estado del muestreador.

ACTUALIZACIÓN: Parece ser que está mal. Empecé a thread on the official forums y hasta ahora solo he recibido una confirmación de que está mal. También envié un correo directamente al equipo de DirectX. Sólo para estar en el lado seguro.

+2

tenga cuidado, [email protected] no se supervisa activamente. – Goz

+0

No lo sabía, gracias. Bueno, también califiqué y proporcioné comentarios sobre el artículo en cuestión, así que tal vez eso funcione. – Tchami

+0

Gracias, me alegro de no haberlo perdido. Logré sacar mi viejo DX9 CHM y tenía un artículo mucho más limpio. DX9 incluso admite matrices de muestras, pero nunca lo sabrías de la página recién restaurada de MSDN. –

0

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

¡Es correcto! La declaración es válida solo para los efectos.

EDITAR: los foros oficiales están en MSDN. Puede publicar una sugerencia o un error utilizando "Adiciones a la comunidad".

Cuestiones relacionadas