Deux fonctions pour Activer/Désactiver le Split-écran, qui est le fait de diviser un écran en plusieurs sous-écrans. Généralement, cette fonction est utilisée pour montrer, dans les jeux multijoueurs sur une seule machine, les différentes vues des différents joueurs.
/*! * \brief Active le Split * \param Window : Fenetre courante * \param Zone : Zone de dessin dans la fenêtre */ inline void SplitOn(const sf::RenderWindow& Window, const sf::Rect<int>& Zone) { glEnable (GL_SCISSOR_TEST); glScissor(Zone.Left, Window.GetHeight() - Zone.Bottom, Zone.GetWidth(), Zone.GetHeight()); } /*! * \brief Desactive de Split (ScissorTest) */ inline void SplitOff() { glDisable (GL_SCISSOR_TEST); }
int main() { sf::RenderWindow Window(sf::VideoMode(800, 600, 32), "Test"); sf::Sprite Test; Test.Resize(40, 40); sf::Rect<int> Zone(300, 200, 600, 400); // La boucle habituelle sf::Event Event; bool isRunning = true; while (isRunning) { while (Window.GetEvent(Event)) { switch(Event.Type) { case sf::Event::Closed: isRunning = false; break; case sf::Event::KeyReleased: switch(Event.Key.Code) { case sf::Key::Escape: isRunning = false; break; } break; } } SplitOn(Window, Zone); for (int y=0; y<10; y++) { for(int x=0; x<10; x++) { Test.SetPosition(x*50 + 150, y*50 + 50); Window.Draw(Test); } } SplitOff(); Window.Display(); } return EXIT_SUCCESS; }