다음을 통해 공유


D3DX10DisassembleShader 함수

참고

이 레거시 함수를 사용하는 대신 D3DDisassemble API를 사용하는 것이 좋습니다.

 

컴파일된 셰이더를 어셈블리 지침 및 등록 할당이 포함된 텍스트 문자열로 디스어셈블하는 이 함수는 더 이상 존재하지 않습니다. 대신 D3DDisassemble10Effect를 사용합니다.

구문

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

매개 변수

pShader [in]

형식: const void*

컴파일된 셰이더에 대한 포인터입니다.

BytecodeLength [in]

형식: SIZE_T

pShader의 크기입니다.

EnableColorCode [in]

형식: BOOL

출력에 HTML 태그를 포함하여 결과를 색 코드로 지정합니다.

pComments [in]

형식: LCSTTR

셰이더 상수 및 변수를 식별하는 셰이더 맨 위에 있는 주석 문자열입니다.

ppDisassembly [out]

형식: ID3D10Blob**

디스어셈블된 셰이더를 포함하는 버퍼의 주소( ID3D10Blob 인터페이스 참조).

반환 값

형식: HRESULT

다음 Direct3D 10 반환 코드 중 하나를 반환합니다.

설명

반환된 이 텍스트에는 이 개체를 생성하는 데 사용되는 HLSL 컴파일러 버전이 포함된 헤더, 셰이더에서 사용하는 상수 버퍼의 메모리 레이아웃을 설명하는 주석, 입력 및 출력 서명 및 리소스 바인딩 지점이 포함됩니다.

다음은 컴파일된 셰이더를 디스어셈블하는 예제입니다. 이 예제에서는 컴파일된 셰이더로 시작한다고 가정합니다(HLSLWithoutFX10 샘플에서 볼 수 있는 pVSBuf로 표시됨).

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 );
        }
    }
}

요구 사항

요구 사항
헤더
D3DX10Core.h

추가 정보

범용 함수