2013-12-14 2 views
0

SharpDX를 D3D11과 함께 사용하는 작업 코드를 제공하고 SharingDX의 콘텐츠 파이프 라인을 사용하고 인스턴스화합니까? 거기에 몇 가지 문제가 있습니다. 저는 SharpDX.Direct3D11.InputLayout을 사용하여 버텍스 쉐이더의 입력을 설명해야 함을 이해하게되었습니다. 이미 문제가 있습니다. SharpDX의 내용 파이프 라인을 사용하기 때문에 셰이더는 런타임이 아닌 컴파일 타임에 컴파일됩니다. 그러면 셰이더의 바이트 코드는 어디에서 얻을 수 있습니까? 그렇게 어렵지는 않지만, 이펙트 오브젝트에서 접근 할 수없는 것 같습니다. 내 다른 질문은, 어떻게 내가 현재 DrawIndexedInstanced 호출 전에 만든 SharpDX.Direct3D11.InputLayout 설정할 수 있습니까?SharpDX instancing with D3D11

+0

어떻게하면 인스턴스 버퍼를 만들어야하는지 알면 좋을 것입니다. –

+0

Muad는 말했다. 2 개의 버텍스 버퍼를 선택하는 대신, 인스턴스에 대해 상수/구조 버퍼를 사용할 수 있습니다. 이 방법은 InputLayout에 영향을주지 않습니다. –

답변

-3

이미 해결, 멋진 함정이있다, 하나는 피해야한다 :

  • 셰이더의 바이트 코드를 얻기 위해, 하나는 쉐이더를 다시 컴파일해야합니다.
  • 입력 레이아웃을 설정하려면 장치를 SharpDX.Direct3D11.Device로 캐스팅하고 즉시 컨텍스트를 사용해야합니다. 기존 버텍스 버퍼 레이아웃을 사용하여 입력 레이아웃의 시작 부분을 생성 할 수 있습니다.
  • 직접 컨텍스트 자체에서 DrawIndexedInstanced 메서드를 호출해야합니다. SharpDX.Toolkit.Graphics.GraphicsDevice에서이 메서드를 호출하면 잘못된 매개 변수 예외가 발생합니다.
관련 문제