2012-12-28 4 views
0

이 이전 코드는 XNA 4.0에서 작동하지 않습니다. XNA 4.0에서 코드가 작동하도록 변경해야하는 항목은 무엇입니까?이 XNA 코드를 XNA 4.0 코드로 변환하는 방법은 무엇입니까?

spriteBatch.Begin(SpriteBlendMode.AlphaBlend,SpriteSortMode.Immediate,SaveStateMode.None,Matrix.Identity); 
    graphics.GraphicsDevice.SamplerStates[0].MagFilter = TextureFilter.Point; 
    graphics.GraphicsDevice.SamplerStates[0].MinFilter = TextureFilter.Point; 
    graphics.GraphicsDevice.SamplerStates[0].MipFilter = TextureFilter.Point; 
spriteBatch.End(); 

나는 다음과 같은 오류 메시지를 얻을 :

'SpriteBlendMode'
이 'SaveStateMode'현재 컨텍스트 'Microsoft.Xna.Framework에 존재하지 않는 현재 컨텍스트에 존재하지 않습니다. Graphics.SamplerState는 MagFilter '없이 확장 메서드'MagFilter ' 유형 의 첫 번째 인수 받아'볼 수 'Microsoft.Xna.Framework.Graphics.SamplerState을 (이다 당신에게'에 대한 정의를 포함하지 않는 ' using 지시문이나 어셈블리 참조가 누락 되었습니까?) 'Microsoft.Xna.Framework.Graphics.SamplerState'에는 'MinFilter'에 대한 정의가없고 'MinFilter' 형식의 첫 번째 인수를 허용하는 확장 메서드가 없습니다. Xna.Framework.Graphics.SamplerState '를 찾을 수 있습니다 (사용 지침이나 어셈블리 참조가 누락 되었습니까? ) 'Microsoft.Xna.Framework.Graphics.SamplerState '에'MipFilter '에 대한 정의가없고 확장자가없는 정의가 없습니다. 메서드 'MipFilter' 형식의 첫 번째 인수를 허용하는 'Microsoft.Xna.Framework.Graphics.SamplerState'를 찾을 수 있음 ( 에 사용 지침이나 어셈블리 참조가 누락 되었습니까?)

여기
+6

"작동하지 않는다"정말 도움이되지 않습니다. 그것은 컴파일합니까? 오류 메시지를 표시합니까? 그렇다면 무엇이 있습니까?오류없이 실행되고 예기치 않게 응답합니까? –

+1

오류 메시지를 추가했습니다. – Andy

답변

4

는 이러한 문제를 해결하는 방법을 보여줍니다 자원이다

http://www.nelxon.com/blog/xna-3-1-to-xna-4-0-cheatsheet/

을이 년 4.0

+0

코드를 변경하려고했지만 MagFilter, MinFilter 및 Mipfilter를 변경하는 방법을 모르겠습니다. 이 세 줄에서 무엇을 바꾸어야합니까? – Andy

+0

안타깝게도이 예제는이 특정 문제에 대한 문맥에서 벗어났습니다. 아마도 Drawcode에서 SamplerStates [0]이 null이거나 읽기 전용 일 때인 것처럼 보입니다. – TGP1994

0
spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, null, null, null, null, Matrix); 
spriteBatch.End(); 

에 오래된 XNA 코드를 업그레이드 관련된 모든 매우 일반적인 문제입니다 XNA 4.0 그래픽 장치를 재설정하지 않고 샘플러 상태를 변경할 수 없습니다. 게임에 Initialize() 메서드가 있으므로 graphics.GraphicsDevice.SamplerStates[0].Filter = TextureFilter.Point;

을 추가해야합니다.

내가 아는 한 최선을 다해 당신이 찾고있는 것이어야합니다!

+0

작동하지 않습니다. 이 오류 메시지가 나타나며 수정 방법을 모르겠습니다. 읽기 전용 SamplerState를 변경할 수 없습니다. 상태 객체는 처음 GraphicsDevice에 바인딩 될 때 읽기 전용이됩니다. 속성 값을 변경하려면 새 SamplerState 인스턴스를 만듭니다. – Andy

+0

XNA 4.0에서 그래픽 장치를 다시 시작하지 않고 샘플러 상태를 변경할 수 없습니다. 따라서 initialize 메서드에서 "graphics.graphicsDevice.samplerstates [0] ..."부분을 추가하십시오 – Cyral

1

여러 사용자가 XNA 프레임 워크의 4.0 버전 최신 코드를 데려 피려 할 일이 있습니다

, 한 가지 더 (이다 내 코드를 업데이트 할 때) : 그래픽 장치가 초기화 된 후 SamplerStates 컬렉션과 SamplerState 개체가 읽기 전용이되도록 XNA 프레임 워크의 버전 3.1과 4.0 사이에서 뭔가가 변경된 것으로 보입니다. 내 자신의 SamplerState 개체를 만들고 거기에 속성을 수정 발견 :

SamplerState sState = new SamplerState(); 
sState.Filter = TextureFilter.Point; 
BaseGame.Device.SamplerStates[0] = sState;