Compartilhar via


switch (sm4 - asm)

Transfere o controle para um bloco de instrução diferente dentro do corpo do comutador, dependendo do valor de um seletor.

alternar src0.select_component
Item Descrição
src0
[in] O seletor para a instrução switch.

Comentários

Um constructo switch/endswitch se comporta exatamente como um constructo de comutador na linguagem C, com a seguinte exceção: para instruçõespadrão de caso/ D3D11 que se enquadram nopróximo padrãode caso/ sem uma interrupção não podem ter nenhum código nelas. É permitido que várias instruções case , incluindo padrão, apareçam sequencialmente, compartilhando o mesmo bloco de código.

A condição deve ser um componente de registro de 32 bits ou uma quantidade imediata. A comparação de igualdade é bit a bit (inteiro).

Assim como acontece com qualquer instrução de sombreador no D3D11, o hardware pode ou não implementar o constructo do comutador diretamente.

As instruções switch podem ser aninhadas. Cada bloco de comutador conta como 1 nível em relação ao limite de profundidade de aninhamento de controle de fluxo de 64 por sub-rotina e principal, independentemente do número de instruções case. O compilador HLSL não gerará sub-rotinas que excedam esse limite. O comportamento das instruções de fluxo de controle além de 64 níveis de profundidade por sub-rotina é indefinido.

O exemplo a seguir mostra como usar esta instrução.

                ...
                switch r0.x
                default: // falling through
                case 3
                    switch r1.x
                    case 4
                        ...
                        break
                    case 5
                        ...
                        break
                    endswitch
                    break
                case 0
                    break
                endswitch

Esta instrução se aplica aos seguintes estágios de sombreador:

Sombreador de vértice Sombreador de geometria Sombreador de pixel
x x x

Modelo de sombreador mínimo

Essa função tem suporte nos modelos de sombreador a seguir.

Modelo de Sombreador Com suporte
Modelo de sombreador 5 sim
Modelo de sombreador 4.1 sim
Modelo de sombreador 4 sim
Modelo de sombreador 3 (DirectX HLSL) não
Modelo de sombreador 2 (DirectX HLSL) não
Modelo de sombreador 1 (DirectX HLSL) não

Assembly do Modelo de Sombreador 4 (DirectX HLSL)