Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Framework] ODFAEG

Pour la création de jeux vidéos

    20 février 2020 à 17:37:22

    J'ai rajouté les .dll manquantes mais le problème persiste.
    • Partager sur Facebook
    • Partager sur Twitter
      21 février 2020 à 18:52:08

      EDIT : bon j'ai corrigé certains crash mais j'ai des nouveaux crash mais je peux pas savoir ou parce que le débogueur plante c'est ça le problème.

      Voilà ce que j'ai avec le débogueur mais je n'ai toujours pas la ligne de la fonction ou ça plante :

      O> This binary was built by Equation Solution <http://www.Equation.com>.
      O> GNU gdb (GDB) 7.12
      O> Copyright (C) 2016 Free Software Foundation, Inc.
      O> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
      O> This is free software: you are free to change and redistribute it.
      O> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
      O> and "show warranty" for details.
      O> This GDB was configured as "i686-pc-mingw32".
      O> Type "show configuration" for configuration details.
      O> For bug reporting instructions, please see:
      O> <http://www.gnu.org/software/gdb/bugs/>.
      O> Find the GDB manual and other documentation resources online at:
      O> <http://www.gnu.org/software/gdb/documentation/>.
      O> For help, type "help".
      O> Type "apropos word" to search for commands related to "word"...
      O> Reading symbols from C:/Users/Laurent/Windows/cwc/_out/Windows_Debug/App.exe...done.
      O> (gdb) Working directory C:/Users/Laurent/Windows/cwc/_out/Windows_Debug.
      O> (gdb) (gdb) (gdb) (gdb) Starting program: C:/Users/Laurent/Windows/cwc/_out/Windows_Debug/App.exe 
      O> [New Thread 4276.0x688]
      O> [New Thread 4276.0x2d14]
      O> [New Thread 4276.0x2cf8]
      O> [New Thread 4276.0x1f10]
      E> warning: Can not parse XML library list; XML support was disabled at compile time
      O> [New Thread 4276.0x1178]
      O> [New Thread 4276.0x1ef4]
      O> [New Thread 4276.0x1b70]
      O> [Thread 4276.0x1178 exited with code 0]
      O> [Thread 4276.0x1b70 exited with code 0]
      O> [Thread 4276.0x1ef4 exited with code 0]
      O> [New Thread 4276.0x2084]
      O> [New Thread 4276.0x2e54]
      O> [New Thread 4276.0x3074]
      O> [New Thread 4276.0x1394]
      O> [New Thread 4276.0x1c9c]
      O> [New Thread 4276.0x1ec4]
      O> [New Thread 4276.0x10f4]
      E> warning: onecore/com/combase/objact/objact.cxx(836)/combase.dll!757EAE4C: (caller: 757E9E1B) ReturnHr(1) tid(688) 800401F0 CoInitialize n’a pas été appelé.
      O> [New Thread 4276.0x1bb8]
      O> [New Thread 4276.0x37f4]
      O> [New Thread 4276.0x2a8]
      O> [New Thread 4276.0xc50]
      O> [Thread 4276.0x1bb8 exited with code 3]
      O> [Thread 4276.0x2a8 exited with code 3]
      O> [Thread 4276.0x1ec4 exited with code 3]
      O> [Thread 4276.0x3074 exited with code 3]
      O> [Thread 4276.0x2e54 exited with code 3]
      O> [Thread 4276.0x1c9c exited with code 3]
      O> [Thread 4276.0x2084 exited with code 3]
      O> [Thread 4276.0x1f10 exited with code 3]
      O> [Thread 4276.0x2d14 exited with code 3]
      O> [Thread 4276.0x2cf8 exited with code 3]
      O> [Thread 4276.0xc50 exited with code 3]
      O> [Thread 4276.0x37f4 exited with code 3]
      O> [Thread 4276.0x1394 exited with code 3]
      O> [Thread 4276.0x10f4 exited with code 3]
      O> [Inferior 1 (process 4276) exited with code 03]



      -
      Edité par OmbreNoire 21 février 2020 à 20:00:13

      • Partager sur Facebook
      • Partager sur Twitter
        22 février 2020 à 0:48:40

        Bravo!!!  Chez moi ça ne crash pas:

        O> This binary was built by Equation Solution <http://www.Equation.com>.
        O> GNU gdb (GDB) 7.12
        O> Copyright (C) 2016 Free Software Foundation, Inc.
        O> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
        O> This is free software: you are free to change and redistribute it.
        O> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
        O> and "show warranty" for details.
        O> This GDB was configured as "i686-pc-mingw32".
        O> Type "show configuration" for configuration details.
        O> For bug reporting instructions, please see:
        O> <http://www.gnu.org/software/gdb/bugs/>.
        O> Find the GDB manual and other documentation resources online at:
        O> <http://www.gnu.org/software/gdb/documentation/>.
        O> For help, type "help".
        O> Type "apropos word" to search for commands related to "word"...
        O> Reading symbols from E:/_Test/ODFAEG/cwc/_out/Windows_Debug/App.exe...done.
        O> (gdb) Working directory E:/_Test/ODFAEG/cwc/_out/Windows_Debug.
        O> (gdb) (gdb) (gdb) (gdb) Starting program: E:/_Test/ODFAEG/cwc/_out/Windows_Debug/App.exe 
        O> [New Thread 22280.0x52d0]
        O> [New Thread 22280.0x57c0]
        O> [New Thread 22280.0x4c18]
        O> [New Thread 22280.0x5af4]
        E> warning: Can not parse XML library list; XML support was disabled at compile time
        O> [New Thread 22280.0x5500]
        O> [New Thread 22280.0x5020]
        O> [New Thread 22280.0x5728]
        O> [Thread 22280.0x5020 exited with code 0]
        O> [Thread 22280.0x5728 exited with code 0]
        O> [New Thread 22280.0x1824]
        O> [Thread 22280.0x5500 exited with code 0]
        O> [New Thread 22280.0x57e4]
        O> [New Thread 22280.0x4cac]
        O> [New Thread 22280.0x4978]
        O> [New Thread 22280.0x54c8]
        O> [New Thread 22280.0x4cc8]
        O> [New Thread 22280.0x5344]
        O> [New Thread 22280.0x59a4]
        O> clear
        O> clear
        O> clear
        O> clear
        O> clear
        O> clear
        O> clear
        O> clear
        Donc, j'obtiens une fenêtre qui clear correctement. :)
        • Partager sur Facebook
        • Partager sur Twitter

        GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

          22 février 2020 à 16:04:31

          Ca va j'ai trouvé comment corrigé les erreurs dans les shaders.

          J'ai essayé de faire de l'instanced rendering mais ça plante. :/

          -
          Edité par OmbreNoire 22 février 2020 à 19:24:19

          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2020 à 10:07:42

            Il y a un problème : sous windows les textures ne s'affichent pas. Pourtant avec SFML les textures s'affichent et j'utilise le même code que sfml. Je ne comprends pas surtout que sur linux je n'ai pas ce problème.
            • Partager sur Facebook
            • Partager sur Twitter
              27 février 2020 à 20:28:19

              Regarde si t'a pas des erreurs OGL ou GLSL
              • Partager sur Facebook
              • Partager sur Twitter

              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                28 février 2020 à 22:33:18

                Si ça peut t'aider, j'ai corrigé l'affichage du backtrace des versions >= 7.12 de gdb, par exemple:



                Tu peux updater/remplacer tout simplement cwc.exe

                Edit:

                Aussi pour déboguer tes textures, regarde du coté de https://renderdoc.org/

                -
                Edité par Maeiky 28 février 2020 à 22:37:14

                • Partager sur Facebook
                • Partager sur Twitter

                GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                  29 février 2020 à 18:35:38

                  Bon j'ai trouvé pour les textures, en fait c'est parce que j'avais activé à la fois GL_TEXTURE_2D et GL_TEXTURE_3D.

                  Mais le problème maintenant c'est que en testant l'instanced rendering pour optimiser, j'ai un écran noir, ça ne dessine rien du tout!

                  J'ai essayé avec gDeBugger pour voir si mes vbos pour les matrices et les sommets étaient bien remplie, elles sont bien remplie.

                  EDIT : l'instanced rendering fonctionne j'ai trouvé ce qui n'allait pas.

                  Je l'ai fais pour zSortingRenderComponent, maintenant il faut que je le fasse pour les autres composants de rendu.

                  -
                  Edité par OmbreNoire 1 mars 2020 à 16:26:34

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mars 2020 à 19:29:36

                    Bon maintenant que c'est bon pour le sol j'ai un problème pour afficher le haut avec la classe perPixelLinkedList qui pourtant fonctionne sous linux. -_-

                    • Partager sur Facebook
                    • Partager sur Twitter
                      5 mars 2020 à 18:07:09

                      Salut!

                      J'ai update le dépôt git, j'ai un problème avec le blending alpha qui ne se fait pas, je n'ai pas se problème sous linux, du coup il m'affiche soit juste le sol ou bien juste les décors... 

                      Il doit sûrement y avoir un truc comme pour les textures ou activer GL_TEXTURE_2D et GL_TEXTURE_3D en même temps donne des textures blanches.

                      Cependant je ne vois pas ce qui cloche. 

                      EDIT, j'ai update le dépôt git.

                      -
                      Edité par OmbreNoire 5 mars 2020 à 18:08:06

                      • Partager sur Facebook
                      • Partager sur Twitter
                        5 mars 2020 à 18:51:41

                        Yay, j'ai un rendu!  :soleil:

                        Personnellement j'utilise ça (C'est pas du C++ mais ça revient au même):
                        OpenGL.fBindFramebuffer(FRAMEBUFFER, null); //Default
                        OpenGL.fEnable( BLEND );
                        OpenGL.fBlendFunc(ONE,ONE_MINUS_SRC_ALPHA );  //Front to back
                        OpenGL.fDrawElementsInstanced(...);
                        • Partager sur Facebook
                        • Partager sur Twitter

                        GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                          5 mars 2020 à 19:50:01

                          Je pense que je dois "blender" dans le mauvais sens..., ça doit être ça..., parce que là il fait comme si il n'y avait pas de blending au lieu de faire un blend alpha il remplace la couleur.

                          L'instanced rendering ça optimise bien j'arrive à rendre le sol et le décor avec les perPixelLinkedList sans que ça rame, sur linux ça ramait quand je faisais ça, je suis content d'avoir prit un nouveau PC mais maintenant faut que j'arrive à avoir le même rendu que sous linux avec les ombres et les lumières.

                          EDIT : bon c'est pas ça j'ai inversé l'ordre de rendu toujours pareil.

                          -
                          Edité par OmbreNoire 5 mars 2020 à 19:58:39

                          • Partager sur Facebook
                          • Partager sur Twitter
                            10 mars 2020 à 13:46:14

                            Bon j'ai essayé avec un code simple en utilisant la SFML mais le blending alpha ne se fait pas non plus :

                            int main(int argc, char* argv[])
                            {
                               /* EXPORT_CLASS_GUID(BoundingVolumeBoundingBox, BoundingVolume, BoundingBox)
                                EXPORT_CLASS_GUID(EntityTile, Entity, Tile)
                                EXPORT_CLASS_GUID(EntityTile, Entity, BigTile)
                                EXPORT_CLASS_GUID(EntityWall, Entity, g2d::Wall)
                                EXPORT_CLASS_GUID(EntityDecor, Entity, g2d::Decor)
                                EXPORT_CLASS_GUID(EntityAnimation, Entity, Anim)
                                EXPORT_CLASS_GUID(EntityHero, Entity, Hero)
                                EXPORT_CLASS_GUID(EntityMesh, Entity, Mesh)
                                MyAppli app(sf::VideoMode(800, 600), "Test odfaeg");
                                return app.exec();*/
                                sf::RenderWindow window(sf::VideoMode(800, 600), "test blending", sf::Style::Default, sf::ContextSettings(0, 0, 0, 3, 0));
                                sf::RenderTexture rt1, rt2;
                                rt1.create(800, 600, sf::ContextSettings(0, 0, 0, 3, 0));
                                rt2.create(800, 600, sf::ContextSettings(0, 0, 0, 3, 0));
                                sf::RectangleShape tile1 (sf::Vector2f(100, 50));
                                tile1.setFillColor(sf::Color(255, 0, 0, 50));
                                sf::RectangleShape tile2 (sf::Vector2f(100, 50));
                                tile2.setPosition(50, 25);
                                tile2.setFillColor(sf::Color(0, 255, 0, 50));
                                sf::RectangleShape tile3 (sf::Vector2f(100, 50));
                                tile3.setPosition(-50, 25);
                                tile3.setFillColor(sf::Color(0, 0, 255, 50));
                                sf::Sprite trt1(rt1.getTexture());
                                sf::Sprite trt2(rt2.getTexture());
                                while (window.isOpen()) {
                                    sf::Event event;
                                    while (window.pollEvent(event)) {
                                        if (event.type == sf::Event::Closed) {
                                            window.close();
                                        }
                                    }
                                    window.clear();
                                    rt1.clear();
                                    rt2.clear();
                                    rt1.draw(tile1);
                                    rt1.display();
                                    rt2.draw(tile2);
                                    rt2.draw(tile3);
                                    rt2.display();
                                    window.draw(trt1);
                                    window.draw(trt2);
                                    window.display();
                                }
                                return 0;
                            }
                            

                            Par contre sans utiliser de FBO le blending se fait bien.

                            J'ai corrigé un bug pour l'instanced rendering, je ne créais qu'une nouvelle instance par texture et non pas par coordonnée de texture du coup, c'était toujours les coordonnées de texture du premier vertex qui étaient utilisées, j'ai réglé se problème maintenant il n'affiche plus toujours le même mur, par contre, ce bug avec le blending et les FBO c'est embêtant.



                            • Partager sur Facebook
                            • Partager sur Twitter
                              10 mars 2020 à 16:48:38

                              De mémoire, avec et sans FBO c'est pas les même paramètres, moi même j'ai eu du trouble avec ça. Ça peut dépendre aussi de comment tu clear le buffer.
                              • Partager sur Facebook
                              • Partager sur Twitter

                              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                10 mars 2020 à 17:46:33

                                Je vois que SFML utilise les mêmes paramètres pour le blending que ce soit avec un FBO ou pas.

                                Quels seraient les paramètres pour le blending avec un FBO parce que là il ne fait pas de blending c'est comme si j'avais passé sf::BlendNone à la fonction draw.

                                Je clear le buffer comme ça : glClear(GL_COLOR_BUFFER_BIT);

                                EDIT : J'ai essayé glEnablei(GL_BLEND, 0); mais ça ne marche pas.

                                J'ai essayé un blending front to back mais écran noir.


                                -
                                Edité par OmbreNoire 11 mars 2020 à 16:32:14

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 mars 2020 à 12:55:59

                                  Bon je n'ai trouvé aucun lien qui explique quels paramètres mettre pour le blending avec les fbo.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    14 mars 2020 à 14:32:59

                                    Si j'aurais un peu plus de temps, je pourrais regarder, mais tu as quoi dans glClearColor?

                                    Essaie de mettre le cannal alpha en transparence. 

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                      14 mars 2020 à 15:55:51

                                      Dans le glClearColor j'ai 0,0,0,0. C'est à dire transparent car on doit pouvoir voir à travers le composant de rendu pour voir le sol. J'applique ensuite le blending alpha pour que l'on voit à travers. Mais ça ne fonctionne pas, il affiche juste le haut et après quand je me déplace il affiche juste le sol. Je ne sais pas si tu as eu le temps de voir le rendu.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        15 mars 2020 à 21:54:42

                                        Purée j'ai acheté un nouveau PC parce que ça ne tournait pas assez vite sur mon PC portable avec les liste chaînées par pixel, et ça ne marche pas, je crois que je vais pouvoir le revendre..., ou alors je fais comme l'a dit mon frère, j'en profite pour acheter des jeux sur steam car ce PC puissant peut faire tourner n'importe quel jeux.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          16 mars 2020 à 20:40:42

                                          J'ai regardé un peu, mais en fait je ne comprend pas ce que tu essais de faire. Pourquoi utiliser un FBO?
                                          Tu rend le sol et les décors dans des passes différente?

                                          Je ne voie pas l'utilité, tu gaspille de la mémoire et du temps de synchronisation.
                                          Sinon peut-être que je pourrais t'aider juste si je trouve comment rendre le sol. Sinon pour les décors ça semble bien fonctionner.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                            17 mars 2020 à 12:47:17

                                            Salut, je rend le sol et le décor dans des passes différentes.

                                            En fait je dois :

                                            -Afficher le sol.

                                            -Afficher les ombres.

                                            -Afficher les décors.

                                            -Afficher les lumières.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              7 avril 2020 à 17:16:25

                                              Je jette l'éponge, je ne trouve pas le problème, normalement quand on rend en blending alpha, là ou c'est transparent et donc ou il n'y a pas de décors on devrait voir le sol, mais non, je ne sais pas d'ou vient le problème mais même avec la SFML j'ai ce problème.

                                              Je n'ai pas se problème sous linux avec mesa driver serait-ce le driver ? Dans ce cas là, je ne peux rien faire pour résoudre ce problème.

                                              -
                                              Edité par OmbreNoire 7 avril 2020 à 17:16:58

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                7 avril 2020 à 17:52:40

                                                Peut-être que tu te fie trop à la SFML qui ne gère déjà pas très bien les shaders / batching.
                                                Regarde/essaie les exemples:
                                                http://www.songho.ca/opengl/gl_fbo.html
                                                https://alexandre-laurent.developpez.com/tutoriels/OpenGL/OpenGL-FBO/

                                                En gros tu fais un rendu dans un FBO, ensuite celui-ci est comme une texture normal que tu peu rendre dans un autre FBO. Je ne voie pas ce qui cloche.
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                  8 avril 2020 à 18:50:48

                                                  Moi non plus je ne vois pas ce qui cloche, mon sprite batching et mes shaders sont bon parce que les textures de mes fbo sont bonnes quand je les affichent, c'est lorsque je veux rendre les textures de mes fbo en blending alpha dans le framebuffer par défaut que ça cloche au lieu de faire le blending alpha il remplace la texture du sol par celle des décors...

                                                  Pourtant j'ai bien paramétrer opengl pour qu'il fasse du blending alpha.

                                                  EDIT : Bon le problème vient de la SFML, j'ai essayé d'utiliser opengl en dehors de la SFML et là le blending se fait bien.

                                                  int main(int argc, char* argv[])
                                                  {    
                                                      sf::Window window(sf::VideoMode(800, 600), "test", sf::Style::Default, sf::ContextSettings(0, 0, 4, 3, 0));
                                                      GLenum err = glewInit();
                                                      if (GLEW_OK != err)
                                                      {
                                                        /* Problem: glewInit failed, something is seriously wrong. */
                                                        fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
                                                  
                                                      }
                                                      glEnable(GL_TEXTURE_2D);
                                                      glEnable(GL_BLEND);
                                                      glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                                                      float verticesFBO1[] = {-1.f, -1.f,
                                                                          1.f, 0, 0, 0.5f,
                                                                          -0.90f, -1.f,
                                                                          1.f, 0, 0, 0.5f,
                                                                          -0.90f, -0.90f,
                                                                          1.f, 0, 0, 0.5f,
                                                                          -1.f, -0.90f,
                                                                          1.f, 0, 0, 0.5f};
                                                      float verticesFBO2[] = {-0.95f, -0.95f,
                                                                          0, 1.f, 0, 0.5f,
                                                                          -0.85f, -0.95f,
                                                                          0, 1.f, 0, 0.5f,
                                                                          -0.85f, -0.85f,
                                                                          0, 1.f, 0, 0.5f,
                                                                          -0.95f, -0.85f,
                                                                          0, 1.f, 0, 0.5f};
                                                      float fullScreenQuad[] = {-1.f, -1.f,
                                                                                1.f, 1.f, 1.f, 1.f,
                                                                                0.f, 0.f,
                                                                                -1.f, 1.f,
                                                                                1.f, 1.f, 1.f, 1.f,
                                                                                1.f, 0.f,
                                                                                1.f, 1.f,
                                                                                1.f, 1.f, 1.f, 1.f,
                                                                                1.f, 1.f,
                                                                                1.f, -1.f,
                                                                                1.f, 1.f, 1.f, 1.f,
                                                                                0.f, 1.f};
                                                  
                                                      GLuint textureFBO1;
                                                      glGenTextures(1, &textureFBO1);
                                                      glBindTexture(GL_TEXTURE_2D, textureFBO1);
                                                      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                                                  
                                                      GLuint textureFBO2;
                                                      glCheck(glGenTextures(1, &textureFBO2));
                                                      glBindTexture(GL_TEXTURE_2D, textureFBO2);
                                                      glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 800, 600, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
                                                      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                                                  
                                                      glEnableClientState(GL_VERTEX_ARRAY);
                                                      glEnableClientState(GL_COLOR_ARRAY);
                                                      glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                                                      const char* data = reinterpret_cast<const char*>(fullScreenQuad);
                                                      glVertexPointer(2, GL_FLOAT, 32, data + 0 );
                                                      glColorPointer(4, GL_FLOAT, 32, data + 8);
                                                      glTexCoordPointer(2, GL_FLOAT, 32, data + 24);
                                                  
                                                      sf::Context contextFBO1(sf::ContextSettings(0, 0, 4, 3, 0),800, 600);
                                                      glEnableClientState(GL_VERTEX_ARRAY);
                                                      glEnableClientState(GL_COLOR_ARRAY);
                                                      const char* data2 = reinterpret_cast<const char*>(verticesFBO1);
                                                      glVertexPointer(2, GL_FLOAT, 24, data2 + 0 );
                                                      glColorPointer(4, GL_FLOAT, 24, data2 + 8);
                                                      GLuint framebuffer1;
                                                      glGenFramebuffers(1, &framebuffer1);
                                                      glBindFramebuffer(GL_FRAMEBUFFER, framebuffer1);
                                                      glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureFBO1, 0);
                                                      if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
                                                          std::cerr<<"failed to create frame buffer 1";
                                                      }
                                                  
                                                      sf::Context contextFBO2(sf::ContextSettings(0, 0, 4, 3, 0),800, 600);
                                                      glEnableClientState(GL_VERTEX_ARRAY);
                                                      glEnableClientState(GL_COLOR_ARRAY);
                                                      const char* data3 = reinterpret_cast<const char*>(verticesFBO2);
                                                      glVertexPointer(2, GL_FLOAT, 24, data3 + 0 );
                                                      glColorPointer(4, GL_FLOAT, 24, data3 + 8);
                                                      GLuint framebuffer2;
                                                      glGenFramebuffers(1, &framebuffer2);
                                                      glBindFramebuffer(GL_FRAMEBUFFER, framebuffer2);
                                                      glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureFBO2, 0);
                                                      if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
                                                          std::cerr<<"failed to create frame buffer 2";
                                                      }
                                                      fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));
                                                      while (window.isOpen()) {
                                                          sf::Event event;
                                                          while (window.pollEvent(event)) {
                                                              if (event.type == sf::Event::Closed) {
                                                                  window.close();
                                                              }
                                                          }
                                                          contextFBO1.setActive(true);
                                                          glClear(GL_COLOR_BUFFER_BIT);
                                                          glDrawArrays(GL_QUADS, 0, 4);
                                                          glFlush();
                                                          contextFBO2.setActive(true);
                                                          glClear(GL_COLOR_BUFFER_BIT);
                                                          glDrawArrays(GL_QUADS, 0, 4);
                                                          glFlush();
                                                          window.setActive(true);
                                                          glClear(GL_COLOR_BUFFER_BIT);
                                                          glBindTexture(GL_TEXTURE_2D, textureFBO1);
                                                          glDrawArrays(GL_QUADS, 0, 4);
                                                          glBindTexture(GL_TEXTURE_2D, textureFBO2);
                                                          glDrawArrays(GL_QUADS, 0, 4);
                                                          window.display();
                                                      }
                                                      return 0;
                                                  }
                                                  

                                                  EDIT2 : Bon on dirait que c'est un problème avec le glCLearColor, quand j'enlève le glClearColor ici le blending se fait bien :

                                                  ////////////////////////////////////////////////////////////
                                                          void RenderTarget::clear(const Color& color)
                                                          {
                                                              if (activate(true))
                                                              {
                                                                  applyTexture(nullptr);
                                                                  glCheck(glClearColor(color.r / 255.f, color.g / 255.f, color.b / 255.f, color.a / 255.f));
                                                                  glCheck(glClear(GL_COLOR_BUFFER_BIT));
                                                              }
                                                          }




                                                  -
                                                  Edité par OmbreNoire 9 avril 2020 à 1:32:17

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    9 avril 2020 à 19:01:18

                                                    Ha bah j'ai trouvé le problème, quel con, je les avais mis sur la même couche en z :

                                                    PerPixelLinkedListRenderComponent *frc1 = new PerPixelLinkedListRenderComponent(getRenderWindow(),0, "E_BIGTILE", ContextSettings(0, 0, 4, 4, 6));
                                                    PerPixelLinkedListRenderComponent *frc2 = new PerPixelLinkedListRenderComponent(getRenderWindow(),0, "E_WALL+E_DECOR+E_ANIMATION+E_CARACTER", ContextSettings(0, 0, 4, 4, 6));


                                                    Du coup le décor se traçait à la place du sol et non pas au dessus du sol, comme ça, ça marche!

                                                    PerPixelLinkedListRenderComponent *frc1 = new PerPixelLinkedListRenderComponent(getRenderWindow(),0, "E_BIGTILE", ContextSettings(0, 0, 4, 4, 6));
                                                            PerPixelLinkedListRenderComponent *frc2 = new PerPixelLinkedListRenderComponent(getRenderWindow(),1, "E_WALL+E_DECOR+E_ANIMATION+E_CARACTER", ContextSettings(0, 0, 4, 4, 6));

                                                    En remplaçant 0 par 1 après le getRenderWindow().

                                                    J'ai cherché pendant des jours et c'était bêtement ça! purée.

                                                    Je met à jour le dépôt git normalement on devrait voir le décor et le sol, pas encore les ombres ni les lumières car je dois modifier les shaders.

                                                    Désomrais le framework gère l'instanced rendering et l'OIT!

                                                    -
                                                    Edité par OmbreNoire 9 avril 2020 à 20:54:38

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      11 avril 2020 à 4:14:07

                                                      It seems to work! ;)

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter

                                                      GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                        11 avril 2020 à 18:38:04

                                                        J'ai encore quelques soucis, en mode Debug lorsque je déplace la vue avec les touches zqsd, et que j'affiche le personnage, celui-ci clignote. (Bizarre, je n'avais pas se soucis sous linux)

                                                        Et en mode release lorsque j'essaye de déplacer la vue j'ai un crash (illegal instruction) je n'avais pas ça sous linux.

                                                        -
                                                        Edité par OmbreNoire 11 avril 2020 à 18:50:12

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          24 avril 2020 à 15:28:49

                                                          Bon, j'ai essayé d'afficher les ombres et les lumières mais sans instanced rendering, en utilisant encore l'opengl 3.0 car ça marche mieux comme ça avec l'opengl moderne les ombres sont mal placées.

                                                          De toute façon il n'y a que avec les per pixel linked list que j'ai besoin de faire de l'instanced rendering car c'est ça qui est le plus lent à rendre.

                                                          EDIT : C'est bon j'ai réussi!!!

                                                          Opengl moderne avec ombres et lumières!!!

                                                          -
                                                          Edité par OmbreNoire 24 avril 2020 à 17:50:48

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            26 avril 2020 à 16:52:10

                                                            C'est sur ces dernières optimisations que j'arrête le développement du moteur de jeux, je n'ai plus la motivation de programmer comme je l'avais avant et je ne sais pas pourquoi...

                                                            Edit : ça tournait à 2 fps sur mon ancien PC portable en mode debug... mais j'étais sous linux avec mesa 3D comme driver ne supportant même pas le glsl 3.3.

                                                            Sur mon nouveau PC j'arrive à 60 fps en mode debug, 350 en mode release, c'est déjà beaucoup mieux avec de l'instanced rendering et les vbos. 

                                                            -
                                                            Edité par OmbreNoire 26 avril 2020 à 16:58:19

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              27 avril 2020 à 21:12:37

                                                              Si tu perd de la motivation c'est probablement parce que tu n'as rien fait de concret avec ton moteur. Quel est la raison pour avoir réalisé ce moteur. Sûrement pour faire des jeux ou même des applications.
                                                              Réalise quelque chose de concret que tu pourrais vendre, ce qui va par la suite démontrer son potentiel et ainsi de suite.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              GZE, un moteur multiplateforme, adapté pour de la 2D, 3D et création de logiciels.

                                                              [Framework] ODFAEG

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown