Compartir a través de


Argumentos de función

Una función toma uno o varios argumentos de entrada; use la sintaxis siguiente para declarar cada argumento.

[InputModifier] Nombre de tipo [: Semántico] [InterpolationModifier] [= Inicializadores]

[Modificador] Nombre de tipo [: Semántico] [: Modificador de interpolación] [= Inicializadores(s)]

Si hay varios argumentos de función, se separan por comas.

Parámetros

Elemento Descripción
InputModifier
Término opcional que identifica un argumento como entrada, una salida o ambos.
Valor Descripción
in Solo entrada
Inout Entrada y salida
out Solo salida
Uniforme Datos constantes de entrada solo

Los parámetros siempre se pasan por valor. en indica que el valor del parámetro debe copiarse desde la aplicación que llama antes de que comience la función. out indica que se debe copiar el último valor del parámetro y volver a la aplicación que realiza la llamada cuando se devuelve la función. inout es una abreviatura para especificar ambos.

Un valor uniforme procede de un registro constante; cada invocación de sombreador de vértices o sombreador de píxeles ve el mismo valor inicial para una variable uniforme. Las variables globales se tratan como si se declararan uniformes. En el caso de las funciones que no son de nivel superior, el uniforme es sinónimo de en. Si no se especifica ningún uso de parámetros, se supone que el uso de parámetros está en.

Tipo

Tipo de argumento; puede ser cualquier tipo HLSL válido.

Nombre

Cadena ASCII que identifica de forma única el nombre de la función de sombreador.

Semántica

Cadena opcional que identifica el uso previsto de los datos (consulte Semántica (DirectX HLSL)).

InterpolationModifier

Modificador de interpolación opcional que permite a un sombreador determinar el método de interpolación. Un modificador de interpolación en un argumento de función solo se aplica a un argumento utilizado como entrada para una función de sombreador de píxeles.

Inicializadores

Valores opcionales para la inicialización; se requieren varios valores para inicializar tipos de datos de varios componentes.

Comentarios

Los argumentos de función se muestran en una lista de argumentos separados por comas en una declaración de función. Como en las funciones de C, cada argumento debe tener un nombre de parámetro y un tipo declarados; Opcionalmente, un argumento para una función HLSL puede incluir una semántica, un valor inicial y una entrada de sombreador de píxeles puede incluir un tipo de interpolación.

El tipo de un argumento de función podría ser una estructura, que podría incluir un modificador de interpolación por miembro. Si el argumento de función también tiene un modificador de interpolación, el modificador del argumento de función invalida los modificadores de interpolación declarados dentro del tipo.

Ejemplos

En este ejemplo (del ejemplo BasicHLSL10) se muestran entradas uniformes y no uniformes en una función de sombreador de vértices.

VS_OUTPUT RenderSceneVS( 
  float4 vPos : POSITION,
  float3 vNormal : NORMAL,
  float2 vTexCoord0 : TEXCOORD,
  uniform int nNumLights,
  uniform bool bTexture,
  uniform bool bAnimate )
{
  ...
}

En este ejemplo (del ejemplo ContentStreaming) se usa una estructura de entrada para pasar argumentos a una función de sombreador de píxeles.

VSBasicIn input
struct VSBasicIn
{
  float4 Pos    : POSITION;
  float3 Norm   : NORMAL;
  float2 Tex    : TEXCOORD0;
};

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

Funciones (DirectX HLSL)