2014-09-19 1 views
-1

저는 초보자 인 C#과 xna를 배우려고합니다. 나는 XNA 게임 루프에 대해 더 깊이 이해하려고 노력 중이다.XNA "게임 루프"의 실제 코드는 어디에 있습니까?

게임 루프가 무엇인지 설명하는 기사가 많이 있지만 실제 루프 구현을 찾을 수없는 것 같습니다.

내가 루프를 찾아 갔을 생각하는 가장 가까운 MSDN 설명서의 게임 클래스의 구성원이 내가이 방법의 내부 구현을 찾을 수있는 올바른 경우

public void Tick() 

어떻게 Update와 Draw 메서드를 호출하는지 보거나 그렇지 않은가?

+0

그래픽 드라이버에서 콜백됩니다. XNAs update()와 콜백 사이에 몇 개의 레이어가 있는지 잘 모르겠습니다. 이것은 C# 및 XNA 학습에 필요한 지식이 아닙니다. XNA의 요점은 모든 것들이 커버 아래 숨겨져 있다는 것입니다. – quin

답변

0

Monogame은 최신 렌더링 파이프 라인을 기반으로하는 XNA의 오픈 소스 복제본이며 SharpDX.Toolkit은 DX11에 대한 XNA-Like 인터페이스를 구현합니다 (Monogame은 실제로 DirectX 통합을 위해 SharpDX를 사용합니다). 이 프로젝트 중 하나의 소스 코드에있는 게임 루프는 MS XNA가 실제로 사용하는 것과 거의 동일하지 않을 가능성이 높습니다.

게임 루프는 구성 요소 기반 장면 그래프를 사용한 전체 게임에서 간단한 데모 응용 프로그램에 대해서는 실제로 많은 작업을 수행하지 않습니다 (단순한 장면을 업데이트/렌더링하기 위해 모든 방법을 쌓아 놓는 경향이 있음) 조금 복잡해 질 수 있습니다. 단일 스레드 엔진의 경우, 일반적으로 생각하는 것입니다

 

    1. update the state of any inputs, 
    2. process any physics simulation if needed, 
    3. call update on all the updatable objects in 
     your scene graph (the engine I'm working on 
     uses interfaces to avoid making wasteful calls 
     on empty stub methods), 
    4. clear the working viewport/depth buffers, 
    5. call render on each renderable object to actually 
     get the GPU drawing on the back buffer. 
    6. swap the render buffers putting everything just 
     drawn to the back buffer up on screen, and making 
     the old viewport buffer the new back buffer to be 
     cleared and drawn on the next rendering pass. 
    7. start over at step 1 :) 

거의 기초를 커버 그와해야 일반적으로 상관없이 작업하는 기본 어떤 API 또는 엔진이 적용되지 않습니다.

+0

정확히 OP에서 'Monogame'을 언급합니까? – MickyD

+0

그는 XNA가 사용하는 것과 유사한 게임 루프 구현에 대한 소스 코드를 요청했으며 XNA와 유사한 2 개의 오픈 소스 프로젝트를 명명하고 게임 루프를 구현했습니다 – Ascendion