Partilhar via


Argumentos de função

Uma função usa um ou mais argumentos de entrada; Use a sintaxe a seguir para declarar cada argumento.

[InputModifier] Type Name [: Semantic] [InterpolationModifier] [= Initializers]

[Modificador] Nome do tipo [: semântico] [: modificador de interpolação] [= inicializador(es)]

Se houver vários argumentos de função, eles serão separados por vírgulas.

Parâmetros

Número Descrição
InputModifier
Termo opcional que identifica um argumento como entrada, saída ou ambos.
Valor Descrição
em Apenas entrada
entrada Entrada e saída
Apenas saída
uniforme Introduzir apenas dados constantes

Os parâmetros são sempre passados por valor. in indica que o valor do parâmetro deve ser copiado do aplicativo de chamada antes que a função comece. out indica que o último valor do parâmetro deve ser copiado e retornado ao aplicativo de chamada quando a função retorna. inout é uma abreviação para especificar ambos.

Um valor uniforme provém de um registo constante; Cada invocação de sombreador de vértice ou sombreador de pixel vê o mesmo valor inicial para uma variável uniforme. As variáveis globais são tratadas como se fossem declaradas uniformes. Para funções que não são de nível superior, uniforme é sinônimo de em. Se nenhum uso de parâmetro for especificado, o uso do parâmetro será assumido como em.

Tipo

O tipo de argumento; pode ser qualquer HLSL válido tipo.

Nome

Uma cadeia de caracteres ASCII que identifica exclusivamente o nome da função de sombreador.

semântica

Cadeia de caracteres opcional que identifica o uso pretendido dos dados (consulte Semântica (DirectX HLSL)).

InterpolationModifier

Modificador de interpolação opcional que permite que um sombreador determine o método de interpolação. Um modificador de interpolação em um argumento de função só se aplica a um argumento usado como entrada para uma função de sombreador de pixel.

inicializadores

Valores opcionais para inicialização; Vários valores são necessários para inicializar tipos de dados de vários componentes.

Comentários

Os argumentos de função são listados em uma lista de argumentos separados por vírgulas em uma declaração de função. Como nas funções C, cada argumento deve ter um nome de parâmetro e um tipo declarados; um argumento para uma função HLSL opcionalmente pode incluir uma semântica, um valor inicial e uma entrada de sombreador de pixel pode incluir um tipo de interpolação.

O Tipo de um argumento de função pode ser uma estrutura, que pode incluir um modificador de interpolação por membro. Se o argumento de função também tiver um modificador de interpolação, o modificador de argumento de função substituirá os modificadores de interpolação declarados dentro do Type.

Exemplos

Este exemplo (do BasicHLSL10 Sample) ilustra entradas uniformes e não uniformes para uma função de sombreador de vértice.

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

Este exemplo (do ContentStreaming Sample) usa uma estrutura de entrada para passar argumentos para uma função de sombreador de pixel.

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

PSBasicIn VSBasic(VSBasicIn input)
{
  ...
}

funções (DirectX HLSL)