2010-12-27 5 views
3

나는 D3D9, D3D10, OpenGL을 사이에 크로스 플랫폼입니다 .NET 3D 도서관의 게임 & 도구를 만들고있어 윈도우, XBOX, Phone7,에서라도 & 리눅스 (아마 아이폰 & 안드로이드)에서 실행됩니다 & XNA.(XNA 3.1 "Effect.CompileFromFIle") 해당하는 (XNA 4.0) 있습니까?

제 질문은 ... XNA 3.1에서와 같이 XNA 4.0에서 효과 파일을 컴파일 할 수 있기를 원합니다 ... XNA를 죽이면이 기능을 사용하기위한 Microsoft의 구실은 합법적이지 않습니다. 게임을위한 도구를 만드는 데 사용됩니다 (효과 편집기와 유사).

누구나이 문제를 해결할 수 있다면 & 코드를 게시하거나 올바른 방향으로 나를 가리켜 주면 멋진 tnx가 될 것입니다.

답변

4

또한이 질문에 대한 답변이 App Hub에 게시되었습니다. http://forums.create.msdn.com/forums/p/70737/431600.aspx#431600

이 질문에 대한 대답은 콘텐츠 파이프 라인을 사용하여 .fx 소스 파일을 XNA Framework Effect 클래스 생성자에 직접 전달할 수있는 이진 Blob로 컴파일하는 명령 줄 유틸리티 (CompileEffect)를 사용하는 것입니다. 당신은 FX 컴파일러에 대한 문서를 볼 필요 쉐이더를 컴파일하려면 여기

http://create.msdn.com/en-US/education/catalog/sample/stock_effects

EDIT (더 나은 링크) ... 찾는 사람이 질문에 대답 할 수있는 링크입니다. LINK : https://msdn.microsoft.com/en-us/library/windows/desktop/bb232919(v=vs.85).aspx

LINK2 :이 기능은 X 박스와 윈도우 게임 사이의 일관성을 유지하기 위해 멀리 촬영되었습니다 https://msdn.microsoft.com/en-us/library/windows/desktop/bb509710(v=vs.85).aspx

+0

링크가 작동하지 않습니다. – ToolmakerSteve

+0

링크가 업데이트되었습니다. 셰이더 컴파일러 문서를 살펴보십시오. – zezba9000

+0

아, 이해합니다. XNA Content-Pipeline 호출을 사용하는 대신 DirectX 유틸리티로 이동하여 문제를 해결하십시오. – ToolmakerSteve

5

. Xbox는 런타임에 셰이더를 컴파일 할 수 없지만 XNA 3.1에서는 Effect.CompileFromX 메서드가 Xbox와 Windows에 공통적 인 런타임에 포함되었습니다.

Shawn Hargreaves explained in his blog 마찬가지로 런타임에는 효과 콘텐츠 (또는 다른 종류의 콘텐츠)를 컴파일하는 여러 가지 방법이 있지만 Windows 게임에서만 가능합니다.

저는 개인적으로 4 번째 방법 인 Shawn이 구현하기 쉽고 견고하다는 것을 보여줍니다. 런타임에 원하는 모든 유형의 컨텐트를 가져올 수 있으므로 MSBuild 프로젝트 설정의 모든 어려움을 겪을 필요가 없습니다.

편집 : 그것은이 게시물에 대한 답변에 나와있는 모든 방법 (14 년 1 월 (23) 2011 년 : 50-7UTC가) 내 관심에 와서 년대 XNA 컨텐츠 파이프 라인 라이브러리의 일부에 대한 참조를 필요 즉, 사용자가 제품을 사용할 수 있도록 XNA를 설치해야 할 수도 있습니다 ...