Freigeben über


D3DX10DisassembleShader-Funktion

Hinweis

Anstatt diese Legacyfunktion zu verwenden, wird empfohlen, die D3DDisassemble-API zu verwenden.

 

Diese Funktion, die einen kompilierten Shader in eine Textzeichenfolge zerlegt, die Assemblyanweisungen und Registerzuweisungen enthält, ist nicht mehr vorhanden. Verwenden Sie stattdessen D3DDisassemble10Effect.

Syntax

HRESULT D3DX10DisassembleShader(
  _In_  const void       *pShader,
  _In_        SIZE_T     BytecodeLength,
  _In_        BOOL       EnableColorCode,
  _In_        LPCSTR     pComments,
  _Out_       ID3D10Blob **ppDisassembly
);

Parameter

pShader [in]

Typ: const void*

Ein Zeiger auf den kompilierten Shader.

BytecodeLength [in]

Typ: SIZE_T

Die Größe von pShader.

EnableColorCode [in]

Typ: BOOL

Fügen Sie HTML-Tags in die Ausgabe ein, um das Ergebnis zu codieren.

pKommentierungen [in]

Typ: LPCSTR

Die Kommentarzeichenfolge oben im Shader, die die Shaderkonstanten und Variablen identifiziert.

ppDisassembly [out]

Typ: ID3D10Blob**

Adresse eines Puffers (siehe ID3D10Blob-Schnittstelle), der den zerlegten Shader enthält.

Rückgabewert

Typ: HRESULT

Gibt einen der folgenden Direct3D 10-Rückgabecodes zurück.

Bemerkungen

Dieser zurückgegebene Text enthält einen Header mit der Version des HLSL-Compilers, der zum Generieren dieses Objekts verwendet wird, sowie Kommentare, die das Speicherlayout der vom Shader verwendeten Konstantenpuffer, Eingabe- und Ausgabesignaturen und Ressourcenbindungspunkte beschreiben.

Hier sehen Sie ein Beispiel für das Disassemblieren eines kompilierten Shaders. Im Beispiel wird davon ausgegangen, dass Sie mit einem kompilierten Shader beginnen (angezeigt als pVSBuf , der im HLSLWithoutFX10-Beispiel angezeigt wird).

LPCSTR commentString = NULL;
ID3D10Blob* pIDisassembly = NULL;
char* pDisassembly = NULL;
if( pVSBuf )
{
    D3D10DisassembleShader( (UINT*) pVSBuf->GetBufferPointer(), 
        pVSBuf->GetBufferSize(), TRUE, commentString, &pIDisassembly );
    if( pIDisassembly )
    {
        FILE* pFile = fopen( "shader.htm", "w" );
        if( pFile)
        {
            fputs( (char*)pIDisassembly->GetBufferPointer(), pFile );
            fclose( pFile );
        }
    }
}

Anforderungen

Anforderung Wert
Header
D3DX10Core.h

Siehe auch

Universell-Funktionen