그래서 Petri Laarne의 답변을 실험하고 마지막으로 실용적인 코드를 제안합니다. 대부분의 온라인 예제는 C#을 사용하고 있으며 전체 프로세스를 설명하지는 않습니다. 공공 클래스 GAME1에서
: Loadcontent에서
Private WithEvents graphics As GraphicsDeviceManager
Private WithEvents spriteBatch, spriteBatch2 As SpriteBatch
: 여기에 그것을 설명하려고
무승부
Public render2 As RenderTarget2D
spriteBatch2 = New SpriteBatch(GraphicsDevice)
spriteBatch = New SpriteBatch(GraphicsDevice)
render2 = New RenderTarget2D(GraphicsDevice, 1024, 768)
: 이것은 실제에 들어있는 예제 코드
spriteBatch2.GraphicsDevice.SetRenderTarget(render2)
GraphicsDevice.Clear(Color.Black)
srcRect = New Rectangle(440, 0, 440, 440) : destRect = New Rectangle(100, 335, 440, 440)
spriteBatch2.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend) : spriteBatch2.Draw(introNEWMirrorDecos, destRect, srcRect, Color.White) : spriteBatch2.End()
destRect = New Rectangle(300, 335, 440, 440)
spriteBatch2.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend) : spriteBatch2.Draw(introNEWMirrorDecos, destRect, srcRect, Color.White) : spriteBatch2.End()
spriteBatch2.GraphicsDevice.SetRenderTarget(Nothing)
GraphicsDevice.Clear(Color.Black)
destRect = New Rectangle(512, 384, 1024, 768) : srcRect = New Rectangle(0, 0, 1024, 768)
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend) : spriteBatch.Draw(render2, destRect, srcRect, Color.White, PI/12, New Vector2(512, 384), SpriteEffects.None, 0) : spriteBatch.End()
의도 한 것처럼 작동하는 게임 : 대체 렌더링 이미지에서 2 가지를 그린 다음 (이 경우 pi/12로 회전시킬 수 있음). 다르게 또는 더 효율적으로이 작업을 수행하는 방법에 대한
모든 의견에 감사하고, 초기 대답 @Petri Laarne
맞습니다. 현재 버전에서와 같이'GraphicsDevice.SetRenderTarget (...)'을 호출하는 한 동일한 'SpriteBatch' 인스턴스를 사용할 수도 있습니다. 또한 렌더링 대상에 그려지는 장면이 정적 인 경우 다시 그려서 건너 뛸 수 있습니다. –
나는 같은 것을 사용할 수 있습니다. 정적에 의한 의미는 무엇이며 어떻게 알 수 있습니까? 내가 다시 그려 줄 때, 너는 의미하니? @Petri Laarne –
장면이 변경되지 않으면 매 프레임마다 다시 그릴 필요가 없습니다. 'Draw' 호출 할 때마다 백 버퍼 ('Nothing' 렌더 타겟) 만 다시 그리면됩니다. –