2013-04-09 1 views
0

둘러 보았는데이 질문을 가진 사람을 찾을 수 없으므로 답변을 얻었으니 여기 게시하고 있습니다!PrimitiveBatch 및 SpriteBatch를 XNA 4.0에서 함께 사용

2D 카메라를 사용하는 동안 xna에서 primitiveBatch와 spriteBatch를 함께 사용하고 있습니까? primitiveBatch에서 spriteBatch를 사용하여 해당 투영법을 적용 할 수 있습니까?

답변

1

2d 카메라는 단지 매트릭스이며 운 좋게도 spritbatch의 Begin 메서드에는 2 차원 변환 매개 변수가 있습니다.

public void Begin (
    SpriteSortMode sortMode, 
    BlendState blendState, 
    SamplerState samplerState, 
    DepthStencilState depthStencilState, 
    RasterizerState rasterizerState, 
    Effect effect, 
    Matrix transformMatrix 
) 

바로 아래에서 마지막 매개 변수를 찾으십시오.

즉, spritebatch의 end 메서드와 this 사이의 모든 이후 draw 호출에는이 변환 행렬이 적용됩니다.

그림을 좀 더 추상화하려면 카메라의 현재 상태에 대한 올바른 행렬을 반환하는 속성이 포함될 자체 카메라 클래스를 만들 수 있습니다.

빠른 google 검색은 매트릭스 사용을 추상화하는 방법을 잘 보여주고 대신 위치, 축척 및 회전을 사용하는이 자습서를 나에게주었습니다. 더 많은 정보를 들어 http://adambruenderman.wordpress.com/2011/04/05/create-a-2d-camera-in-xna-gs-4-0/

는 내가의 SpriteBatch에 전달하는 데 사용 하나, 내가 카메라에서 현재보기를 얻을 수 있습니다 http://msdn.microsoft.com/en-us/library/ff433701.aspx

+0

에서보고, 지금은에 동일을 통과하려고했는데 primitiveBatch 클래스 primitiveBatch는 BasicEffect를 사용하여 그립니다. 그래서 basicEffect.View를 동일한 행렬로 설정하여 spriteBatch에 전달하지만, 결과적으로 primitiveBatch의 드로잉은 카메라가 움직일 때 따라 가고, spriteBatch는 그렇지 않습니다. 원하지 않습니다. 카메라를 따르는 것이 무엇이든, 내가 뭘 잘못하고 있니? – Enum

+0

nwm, 지금 해결, 내가 primitiveBatch에 잘못된보기를 통과 시켰습니다 :) – Enum