2012-01-05 6 views
0

우리 프로젝트는 DirectX 10 또는 11 SDK 응용 프로그램 내에서 사용되는 다양한 버텍스 및 픽셀, 기하학 셰이더를 프로파일 링하거나 Game (BioShock, Far Cry etc ..) 응용 프로그램.그래픽 드라이버 내에서 Draw() API 호출 이외의 DirectX 10.0 또는 11.0 버텍스 또는 픽셀 쉐이더 사용

Shaders (VS, GS, PS)가 파이프 라인에서 사용되거나 오히려 실행되는 시점에 대한 기술적 이해가 필요합니다. 우리는 Draw() DirectX API 호출 중에 파이프 라인 내에서 설정 셰이더가 실행된다는 것을 알고 있습니다.

  1. 내부적으로 실행하거나 쉐이더를 활용 SetShader를 사용하여 파이프 라인으로 설정 될 수 있습니다 그리기() 호출 이외의 API가 있나요()?

  2. 장치 API (예 : Map, unmap, getResourcem 및 Copy 리소스)가 셰이더를 간접적으로 조작합니까? 우리가 파악하고 강력한 구현을하는 다이렉트 드로우 이외의 DirectX 런타임 또는 그래픽 드라이버 내에서 쉐이더의 사용에 관한

모든 포인터는() API 호출은 도움이 될 것입니다.

+1

일반적으로 Direct3D 및 셰이더의 동작을 이해하는 것이 셰이더 프로파일 링을 시도하기 전에 첫 번째 단계가되지 않습니까? –

+0

Direct3D 및 셰이더에 대한 이해는 Draw() 호출 내에 셰이더 사용에 대한 힌트를 제공하지만 응용 프로그램 내에서 셰이더가 셰이더 생성 및 설정 셰이더 호출에 사용 중이며 그리기 호출을 찾을 수없는 문제가 있습니다. .. –

+0

우리의 질문은 남아 있습니다. 그리기 호출을 사용하지 않고 D3D 런타임 또는 드라이버 내에서 셰이더가 사용되는 방법이 있습니까? –

답변

1
  1. 예, 계산 쉐이더 및 특별히 Dispatch() 메소드를 선택하십시오.
  2. 아니요. 셰이더는 상태 정보이므로 ID3D11 * 셰이더 개체에로드 한 후에는 변경할 수 없습니다. 디 컴파일을 원하면 Shader Reflection API를 살펴보십시오.
+0

계산 셰이더가 Dispatch() 메서드 내에서 실행/실행할 수있는 DirectX 11.0에 대해 이해합니다. 그러나 DirectX 10.0 기반 응용 프로그램의 경우 셰이더 사용 또는 실행이 Draw() 호출보다 다른 DX API에서 수행됩니까? –

+2

필자가 아는 한, 위에서 언급 한 것과는 별도로 파이프 라인을 시작하는 유일한 방법은 Draw * 함수를 호출하는 것입니다. 그래서 내가 알고있는 다른 함수는 없습니다. – asmi84

+0

설명해 주셔서 감사합니다. 방법에있는 응답을 얻었다. –