문제

저는 DirectX 6.1용 Windows Hooks를 작성 중입니다.EMBM(Environment Mapped Bump Mapping)에 대한 호출을 가로채고 해당 데이터를 자체 범프 셰이더에 전달하여 EMBM에 의존하는 응용 프로그램이 올바르게 작동하도록 하고 싶습니다.유일한 문제는 DX 6.1이 셰이더를 전혀 허용하지 않는다는 것입니다.Direct3DDevice3을 최신 SDK의 클래스로 간단하게 바꿀 수는 없습니다. 그 이유는 메서드가 다른 인수 집합을 사용하고 후크된 dll을 사용하는 응용 프로그램이 충돌하기 때문입니다.해결 방법을 모르겠습니다.저는 DirectX에 능숙하지 않습니다(최신 하드웨어에서 작동하는 DX 6.1의 범프를 구현하는 더 효과적인 방법이 있을까요?). 셰이더를 사용할 수 있도록 D3Device에서 일부 인터페이스를 쿼리하는 것이 가능할 수도 있습니까?

나를 올바른 방향으로 인도할 수 있는 모든 것이 있으면 매우 감사하겠습니다.

도움이 되었습니까?

해결책

각 Direct 3D 장치는 IUnknown에서 직접 파생되므로 v6 장치에서 v9 장치로 QI를 수행할 수 없습니다.

드라이버 수준 이상으로 원하는 작업을 수행할 수 있는 유일한 방법은 전체 v6 장치를 구현하고 모든 호출을 해당 v9 장치로 변환하는 것입니다.물론 게임이 v7 또는 v8을 통해 embm을 구현하는 경우 문제가 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top