Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Irrlicht] Problème de qualité d'image

Sujet résolu
Anonyme
    7 juin 2008 à 21:44:43

    Bonjour,

    Je tente d'affiche dans un prog avec Irrlicht plusieurs images pour faire un menu, mais j'ai rapidement remarqué que la qualité était très faible :

    Image utilisateur


    J'ai pourtant mis :

    driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);
    driver->setTextureCreationFlag(video::ETCF_OPTIMIZED_FOR_QUALITY, true);
    


    Comment remédier à ça SVP ? :(

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      7 juin 2008 à 22:05:40

      Salut,

      Quel sont les dimensions de l'image de départ, et quel sont celles du rendu final ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        7 juin 2008 à 22:36:31

        Salut,

        Merci de ta réponse, j'ai pensé la même chose, et pourtant les dimensions sont respectées au pixel près :o .
        • Partager sur Facebook
        • Partager sur Twitter
          8 juin 2008 à 16:08:13

          C'est peut être pour ça que ça déconne.
          Essaye voir avec une texture dont les dimensions sont des puissances de 2.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            8 juin 2008 à 17:46:50

            J'ai mis l'image en 1024×1024 mais ça ne change rien :( .

            Voilà tout le code qui gère ça :

            int mainMenu(IrrlichtDevice *device, irr::video::IVideoDriver *driver)
            {
            	int nbBtn = 5, btnWidth = 300, btnHeight = 80, btnMargin = 30;
            	
            	driver->setTextureCreationFlag(video::ETCF_ALWAYS_32_BIT, true);
            	driver->setTextureCreationFlag(video::ETCF_OPTIMIZED_FOR_QUALITY, true);
            	
            	video::ITexture *background = driver->getTexture("ressources/mainMenuBackground_1024x768.jpg");
            	video::ITexture *logo = driver->getTexture("ressources/mainMenu/logo.png");
            	video::ITexture *buttons = driver->getTexture("ressources/mainMenu/buttons.png");
            	video::ITexture *buttonsHover = driver->getTexture("ressources/mainMenu/buttonsHover.png");
            	video::ITexture *buttonsPressed = driver->getTexture("ressources/mainMenu/buttonsPressed.png");
            	
            	EventReceiverMenu event;
            	device->setEventReceiver(&event);
            	event.setManagers(device, driver);
            	
            	while(device->run())
            	{
            		if(event.getValue() > 0)
            			return event.getValue();
            		
            		driver->beginScene(true, true, video::SColor(0, 0, 0, 0));
            		
            		driver->draw2DImage(background, core::position2d<s32>(0, 0), core::rect<s32>(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT), 0, video::SColor(255, 255, 255, 255), true);
            		driver->draw2DImage(logo, core::position2d<s32>(SCREEN_WIDTH / 2 - 380 / 2, 0), core::rect<s32>(0, 0, 380, 160), 0, video::SColor(255, 255, 255, 255), true);
            		
            		for(int i = 0; i < nbBtn; i++)
            			driver->draw2DImage(i == event.getBtnPressed() ? buttonsPressed : (i == event.getBtnHover() ? buttonsHover : buttons), core::position2d<s32>(SCREEN_WIDTH / 2 - btnWidth / 2, SCREEN_HEIGHT / 2 - (nbBtn * btnHeight) / 2 + i * (btnHeight + btnMargin)), core::rect<s32>(0, i * btnHeight, btnWidth, (i+1) * btnHeight), 0, video::SColor(255, 255, 255, 255), true);
            		
            		driver->endScene();
            	}
            	return 0;
            }
            
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              10 juin 2008 à 0:10:19

              J'ai créé un nouveau projet Irrlicht pour tester les images, j'utilise une image du dossier /media/ et ce code tout simple :

              #include <IRR/Irrlicht.h>
              
              using namespace irr;
              
              int main()
              {
              	IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(800, 600), 32, false);
              	video::IVideoDriver *driver = device->getVideoDriver();
              	scene::ISceneManager *scene = device->getSceneManager();
              	
              	video::ITexture *tex = driver->getTexture("dotnetback.jpg");
              	
              	while(device->run())
              	{
              		driver->beginScene(true, true, video::SColor(0, 180, 180, 180));
              		
              		driver->draw2DImage(tex, core::position2d<s32>(50, 50), core::rect<s32>(0, 0, 600, 500), 0, video::SColor(255, 255, 255, 255), true);
              		
              		driver->endScene();
              	}
              	
              	device->drop();
              	return 0;
              }
              


              Malgré ça, j'ai toujours une qualité mauvaise :( .

              SVP j'ai vraiment besoin que ce problème soit résolu :euh:
              • Partager sur Facebook
              • Partager sur Twitter
                10 juin 2008 à 13:48:58

                Essaye de poser ta question sur le fofo français officiel ou cherche sur le fofo anglais officiel.
                Quelqu'un a surement déjà eut le même problème que toi. :)
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  11 juin 2008 à 16:36:48

                  Merci j'ai trouvé une solution sur le forum d'Irrlicht.fr : Problème de qualité d'image avec ITexture

                  Il fallait tout simplement que les images aient des dimensions par puissances de deux, par contre je ne sais pas pourquoi quand j'ai mis l'image 1024×1024 ça ne s'est pas affiché correctement :euh: .

                  Enfin bref maintenant ça marche c'est le principale :p .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 juin 2008 à 17:12:13

                    Citation : Bilbax

                    Il fallait tout simplement que les images aient des dimensions par puissances de deux



                    Citation : Kevin Leonhart

                    C'est peut être pour ça que ça déconne.
                    Essaye voir avec une texture dont les dimensions sont des puissances de 2.



                    Hum...
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      11 juin 2008 à 17:27:08

                      Citation : Bilbax

                      [...] par contre je ne sais pas pourquoi quand j'ai mis l'image en 1024×1024 ça ne s'est pas affiché correctement :euh: . [...]



                      Hum...
                      • Partager sur Facebook
                      • Partager sur Twitter

                      [Irrlicht] Problème de qualité d'image

                      × 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