Compartilhar via


PFND3DDDI_SETSTREAMSOURCEFREQ função de retorno de chamada (d3dumddi.h)

A função SetStreamSourceFreq define o divisor de frequência de uma fonte de fluxo associada a um buffer de vértice.

Sintaxe

PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;

HRESULT Pfnd3dddiSetstreamsourcefreq(
  HANDLE hDevice,
  const D3DDDIARG_SETSTREAMSOURCEFREQ *unnamedParam2
)
{...}

Parâmetros

hDevice

Um identificador para o dispositivo de exibição (contexto gráfico).

unnamedParam2

pData [in]

Um ponteiro para uma estrutura D3DDDIARG_SETSTREAMSOURCEFREQ que especifica como o divisor de frequência para a origem do fluxo é definido.

Retornar valor

SetStreamSourceFreq retornará S_OK ou um resultado de erro apropriado se o divisor de frequência da parte da origem do fluxo de vértice não for definido com êxito.

Comentários

Um driver de exibição no modo de usuário para um dispositivo que dá suporte ao sombreador de vértice versão 3.0 e posterior deve implementar a divisão de frequência de fluxo de vértice. Para a versão 2.0 e modelos anteriores do sombreador de vértice (incluindo a função fixa), o sombreador de vértice é chamado uma vez para cada vértice. Para cada chamada, os registros de vértice de entrada são inicializados com elementos de vértice exclusivos dos fluxos de vértice. No entanto, se o driver usar a divisão de frequência de fluxo de vértice, o sombreador de vértice (3.0 e posterior) poderá ser chamado para inicializar os registros de entrada aplicáveis a uma taxa menos frequente.

Depois que o divisor de frequência do fluxo for definido, por exemplo, como 2, o driver deverá buscar dados do fluxo e passar esses dados para registros de vértice de entrada aplicáveis a cada 2 vértices. Esse divisor afeta cada elemento no fluxo.

O driver usa o divisor de frequência para calcular o deslocamento de vértice no buffer de vértice de acordo com a seguinte fórmula:

VertexOffset = ((VertexIndex / Divider) * StreamStride) + StreamOffset

Para cada fluxo de vértice usado, se o driver receber um valor de vértice inicial durante uma chamada para a função DrawPrimitive do driver, o driver também dividirá esse valor de vértice inicial pelo divisor de frequência e fatora o resultado na fórmula. Esse valor de vértice inicial é fornecido no membro VStart da estrutura D3DDDIARG_DRAWPRIMITIVE . A fórmula a seguir inclui o valor de vértice inicial:

VertexOffset = (StartVertex / Divider) + 
       ((VertexIndex / Divider) * StreamStride) + StreamOffset 

Observe que as fórmulas anteriores usam a divisão de inteiros.

O driver ignora a configuração do divisor de frequência de um fluxo para primitivos indexados ou se o driver dá suporte apenas a um modelo de sombreador de vértice anterior à versão 3.0 (incluindo a função fixa).

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.
Plataforma de Destino Área de Trabalho
Cabeçalho d3dumddi.h (inclua D3dumddi.h)

Confira também

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

Drawprimitive