Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Slick] Lumière

    11 avril 2012 à 21:57:16

    Bonjour à tous chers zéros, ça fait quelques jours que je cherche à créer un système de lumière dans mon jeu en 2D. Ce que je voudrais faire c'est pouvoir créer des entités "lumière" qui peuvent être éteinte ou allumée à tout moment. Il faudrait aussi que cela puisse s'intégrer dans un cycle jour nuit, pour que le jour, on ne voit pas la lumière et que la nuit on voit juste la lumière et rien d'autre.
    J'ai cherché partout sur internet, sur le forum de slick, sur celui de lwjgl, j'ai essayé avec OpenGL mais je n'ai pas réussi donc je me tourne vers vous pour m'éclairer ( :D ...).

    Je vous remercie,
    nico1123.
    • Partager sur Facebook
    • Partager sur Twitter
      11 avril 2012 à 23:43:31

      import java.nio.FloatBuffer;
      
      import org.lwjgl.BufferUtils;
      
      import org.lwjgl.LWJGLException;
      
      import org.lwjgl.input.Keyboard;
      
      import org.lwjgl.opengl.Display;
      
      import org.lwjgl.opengl.DisplayMode;
      
      import org.lwjgl.util.glu.GLU;
      
      import org.lwjgl.util.glu.Sphere;
      
      
      import static org.lwjgl.opengl.GL11.*;
      
      
      public class LightingTest1 {
      
              private static final int WIDTH = 800, HEIGHT = 600;
      
              private static final DisplayMode DISPLAY_MODE = new DisplayMode(WIDTH, HEIGHT);
      
              private static final String WINDOW_TITLE = "Lighting Test";
      
              private static final int FPS = 70;      //frames per second
      
              
      
              private boolean isRunning;      //variable to tell if program is running or not
      
              private float zTranslation = -12f;
      
              
      
              //----------- Variables added for Lighting Test -----------//
      
              private FloatBuffer matSpecular;
      
              private FloatBuffer lightPosition;
      
              private FloatBuffer whiteLight; 
      
              private FloatBuffer lModelAmbient;
      
              //----------- END: Variables added for Lighting Test -----------//
      
              
      
              public static void main(String[] args) {
      
                      LightingTest1 test = new LightingTest1();
      
                      test.run( );
      
              }
      
      
              private void run() {
      
                      try {
      
                              init();
      
                              while( isRunning ) {
      
                                      getInput();     //read input
      
                                      render();       //render graphics
      
                                      Display.sync(FPS);      //sync to fps
      
                                      Display.update();       //update the view/screen
      
                              }
      
                      } catch (Exception e) {
      
                              e.printStackTrace();
      
                              System.exit(1);
      
                      }
      
              }
      
              
      
              private void render() {
      
                      glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
      
                      glLoadIdentity(); 
      
                      
      
                      glTranslatef(0.0f, 0.0f, zTranslation);
      
                      
      
                      glColor3f(0.1f, 0.4f, 0.9f);
      
                      Sphere s = new Sphere();
      
                      s.draw(1.0f, 20, 16);
      
              }
      
              
      
              
      
              private void getInput() {
      
                      if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {   // if user presses escape key
      
                              isRunning = false;
      
                      }
      
                      if( Display.isCloseRequested()) {       // if user closes window
      
                              isRunning = false;
      
                      }
      
              }
      
              
      
              private void init() {
      
                      createWindow();
      
                      initGL();
      
                      isRunning = true;
      
              }
      
              
      
      
              private void createWindow() {
      
                      try {
      
                              Display.setDisplayMode(DISPLAY_MODE);
      
                              Display.setTitle(WINDOW_TITLE);
      
                              Display.create();
      
                      } catch (LWJGLException e){
      
                              e.printStackTrace();
      
                      }
      
              }
      
              
      
              private void initGL() {
      
                      glClearColor(0.5f, 0.5f, 0.5f, 0.0f); // sets background to grey
      
                      glClearDepth(1.0f); // clear depth buffer
      
                      glEnable(GL_DEPTH_TEST); // Enables depth testing
      
                      glDepthFunc(GL_LEQUAL); // sets the type of test to use for depth testing
      
                      glMatrixMode(GL_PROJECTION); // sets the matrix mode to project
      
                      
      
                      float fovy = 45.0f;
      
                      float aspect = DISPLAY_MODE.getWidth() / (float)DISPLAY_MODE.getHeight();
      
                      float zNear = 0.1f;
      
                      float zFar = 100.0f;
      
                      GLU.gluPerspective(fovy, aspect, zNear, zFar);
      
                      
      
                      glMatrixMode(GL_MODELVIEW);
      
                      
      
                      glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 
      
                      
      
                      //----------- Variables & method calls added for Lighting Test -----------//
      
                      initLightArrays();
      
                      glShadeModel(GL_SMOOTH);
      
                      glMaterial(GL_FRONT, GL_SPECULAR, matSpecular);                         // sets specular material color
      
                      glMaterialf(GL_FRONT, GL_SHININESS, 50.0f);                                     // sets shininess
      
                      
      
                      glLight(GL_LIGHT0, GL_POSITION, lightPosition);                         // sets light position
      
                      glLight(GL_LIGHT0, GL_SPECULAR, whiteLight);                            // sets specular light to white
      
                      glLight(GL_LIGHT0, GL_DIFFUSE, whiteLight);                                     // sets diffuse light to white
      
                      glLightModel(GL_LIGHT_MODEL_AMBIENT, lModelAmbient);            // global ambient light 
      
                      
      
                      glEnable(GL_LIGHTING);                                                                          // enables lighting
      
                      glEnable(GL_LIGHT0);                                                                            // enables light0
      
                      
      
                      glEnable(GL_COLOR_MATERIAL);                                                            // enables opengl to use glColor3f to define material color
      
                      glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);                      // tell opengl glColor3f effects the ambient and diffuse properties of material
      
                      //----------- END: Variables & method calls added for Lighting Test -----------//
      
              }
      
              
      
      
              //------- Added for Lighting Test----------//
      
              private void initLightArrays() {
      
                      matSpecular = BufferUtils.createFloatBuffer(4);
      
                      matSpecular.put(1.0f).put(1.0f).put(1.0f).put(1.0f).flip();
      
                      
      
                      lightPosition = BufferUtils.createFloatBuffer(4);
      
                      lightPosition.put(1.0f).put(1.0f).put(1.0f).put(0.0f).flip();
      
                      
      
                      whiteLight = BufferUtils.createFloatBuffer(4);
      
                      whiteLight.put(1.0f).put(1.0f).put(1.0f).put(1.0f).flip();
      
                      
      
                      lModelAmbient = BufferUtils.createFloatBuffer(4);
      
                      lModelAmbient.put(0.5f).put(0.5f).put(0.5f).put(1.0f).flip();
      
              }
      
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
      www.creationjeuxjava.fr - Unity3D - LibGDX - Tutoriels de Jeux vidéo !
        12 avril 2012 à 17:43:06

        C'est aussi pour la 2D ?
        • Partager sur Facebook
        • Partager sur Twitter
          15 avril 2012 à 17:36:33

          Personne saurait m'aider?
          • Partager sur Facebook
          • Partager sur Twitter
            15 avril 2012 à 18:18:48

            pourquoi ne testes tu pas ? tu aurais ta réponse...test test test
            • Partager sur Facebook
            • Partager sur Twitter
            www.creationjeuxjava.fr - Unity3D - LibGDX - Tutoriels de Jeux vidéo !
              15 avril 2012 à 23:25:54

              Ok, déjà merci car c'est déjà quelque chose qui marche mais mon soucis à moi c'est à faire des zones d'ombres et des zones de lumière. Par exemple, ici, je voudrais que de un, il y ai le rayon de la lampe torche et de deux, le point rouge sois un autre lampe mais qui ne bouge pas avec nous. Mais aussi, comment faire là fort :euh:
              Image utilisateur


              Merci car je galère pas mal en ce moment...
              • Partager sur Facebook
              • Partager sur Twitter
                17 avril 2012 à 21:47:10

                Désolé,
                j'ai pas compris ce que tu voulais faire en faite précisément.
                Je t'ai donné un code qui te permet de faire la lumière, tu devrais pouvoir t'en sortir no ?
                • Partager sur Facebook
                • Partager sur Twitter
                www.creationjeuxjava.fr - Unity3D - LibGDX - Tutoriels de Jeux vidéo !
                  17 avril 2012 à 22:41:29

                  Oui mais je voudrais faire des "spots" en gros
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [Slick] Lumière

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown