Пример #1
0
int main() {
    if (SystemCheck()) {
        LOG("Adding resources.");

        if (Effect.Load)
            Effect.Load();

        StartEventQueue();
        StartProfiling();
        SetFrameCounter(0);
        TRY {
            BOOL loopExit = false;

            LOG("Setting up the effect.");
            Effect.Init();
            LOG("Running up main loop.");

            do {
                InputEventT event;
                int32_t frameNumber;

                while (EventQueuePop(&event)) {
                    if (event.ie_Class == IECLASS_RAWKEY)
                        if (event.ie_Code & IECODE_UP_PREFIX)
                            if ((event.ie_Code & ~IECODE_UP_PREFIX) == KEY_ESCAPE)
                                loopExit = true;
                    if (Effect.HandleEvent && !loopExit)
                        Effect.HandleEvent(&event);
                }

                frameNumber = ReadFrameCounter();
                Effect.Render(frameNumber);
                RenderFrameNumber(frameNumber);
                RenderFramesPerSecond(frameNumber);

                DisplaySwap();
            } while (!loopExit);

            LOG("Tearing down the effect.");
            Effect.Kill();
        }
        CATCH {
            LOG("Effect crashed!");
        }
        StopProfiling();
        StopEventQueue();

        if (Effect.UnLoad)
            Effect.UnLoad();
    }

    return 0;
}
Пример #2
0
/*
 * Main loop.
 */
void MainLoop() {
  LoopEventT event = LOOP_CONTINUE;

  SetVBlankCounter(0);

  do {
    int frameNumber = GetVBlankCounter();

    RenderEffect(frameNumber);
    RenderFrameNumber(frameNumber);
    RenderFramesPerSecond(frameNumber);

    DisplaySwap();
  } while ((event = ReadLoopEvent()) != LOOP_EXIT);
}
Пример #3
0
void MainLoop() {
  LoopEventT event = LOOP_CONTINUE;

  SetVBlankCounter(0);

  do {
    static bool paused = FALSE;
    static int oldFrameNumber = 0;
    int frameNumber = GetVBlankCounter();

    if (event == LOOP_PAUSE)
      paused = !paused;

    if (paused) {
      SetVBlankCounter(oldFrameNumber);
      frameNumber = oldFrameNumber;
    } else {
      oldFrameNumber = frameNumber;
    }

    if (event == LOOP_TRIGGER) {
      RenderMode++;
      if (RenderMode > 4)
        RenderMode = 0;

      if (RenderMode < RENDER_FILLED)
        RenderAllFaces = true;
      else
        RenderAllFaces = false;
    }

    RenderMesh(frameNumber);
    RenderFrameNumber(frameNumber);
    RenderFramesPerSecond(frameNumber);

    DisplaySwap();
  } while ((event = ReadLoopEvent()) != LOOP_EXIT);
}