IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

Image en background sur une fenetre openGL


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut Image en background sur une fenetre openGL
    Bonjour à tous , je débute et j'aimerai savoir si c'est possible de mettre une image en fond d'écran au lieu que ce soit tout noir ,
    Si c'est le cas , comment faire ?

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2008
    Messages
    162
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 162
    Par défaut
    Salut
    une facon simple de faire est de passer en mode 2D avec glOrtho2D puis desactiver l'ecriture en ZBuffer , puis dessiner un rectangle texturé sur toute la surface de la fenetre puis reactiver le ZBuffer ...
    ++

  3. #3
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut
    Ca a l'air intéressant, je vais regarder de ce pas , merci

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut
    En fait , je vais redéfinir mon problème , Je dois faire un objet 3D qui fait des rotations par exemple grace à ma souris (déjà implémenté) sur une image en fond d'écran qui elle ne bouge pas du tout ,
    je ne sais pas si là, la skybox est adaptée à mon problème

  6. #6
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par bonofred Voir le message
    En fait , je vais redéfinir mon problème , Je dois faire un objet 3D qui fait des rotations par exemple grace à ma souris (déjà implémenté) sur une image en fond d'écran qui elle ne bouge pas du tout ,
    je ne sais pas si là, la skybox est adaptée à mon problème
    On va dire que c'est une version évoluée d'un fond qui ne bouge pas ...

    Par contre, si tu veux un fond qui ne bouge pas, tu peux dessiner un quad texturé avec ton fond voulu avec l'écriture du depth désactivé (même principe que la skybox). Ton quad sera toujours fixe par rapport à ta camera..

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut
    Là , je galère vraiment , j'essaie de charger une image jpeg , mais rien ne fonctionne,
    tu n'aurais pas un squelette de code pour voir ?

  8. #8
    Expert confirmé
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Par défaut
    Citation Envoyé par bonofred Voir le message
    Là , je galère vraiment , j'essaie de charger une image jpeg , mais rien ne fonctionne,
    tu n'aurais pas un squelette de code pour voir ?
    Charger une image jpeg, c'est pas évident .. il faudrait utilisé "libjpeg" pour la décompresser et la charger. Je te conseille de commencer par du bmp où tu peux trouver les sources à la fin du tuto sur les skybox.

    Sinon, il y a quelques sources par la : http://jeux.developpez.com/sources/opengl/

  9. #9
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Par défaut
    le mieux est encore d 'utiliser une lib a image type "couteau suisses" (libjpeg est quelque peu tres specifiques et complique a mettre en place. D 'autant plus que pour lutilisateur lambda,la valeur ajoute de travail a aussi bas niveau est nulle). A l epoque j utilisais DevIL tres simple a utiliser qui chargeait simplement JPEG , BMP , PNG ...

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut
    Les gars , je galère vraiment de trop , vous n'auriez pas un squelette de code a me proposer pour vraiment comprendre la syntaxe , ca serait vraiment sympa

  11. #11
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 115
    Par défaut
    Pour charger des textures avec Devil, voici une petite classe en espérant que ça t'aidera :
    En pré-requis, glee.h et devil installé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    #ifndef TEXTURE_H
    #define TEXTURE_H
     
    #include <GL/glee.h>
    #include <GL/glut.h>
    #include <IL\ilut.h>
     
    class Texture
    {
    public:
    	Texture();
    	~Texture();
    	void Init(char *filename,bool detail = false);
    	GLuint GetId(){return m_glId;}
     
    	unsigned int GetWidth(){return m_w;}
    	unsigned int GetHeight(){return m_h;}
    protected:
    	unsigned int m_h;
    	unsigned int m_w;
    	unsigned int m_bpp;
    	GLuint m_glId;
    };
    #endif

    Pour le cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    #include "texture.h"
     
    Texture::Texture()
    {
    	m_glId = 0;
    	m_h = 0;
    	m_w = 0;
    }
     
    Texture::~Texture()
    {
    	glDeleteTextures(1,&m_glId);
    }
     
    void Texture::Init(char *filename,bool detail)
    {
    	ILuint ilId;
    	glEnable(GL_TEXTURE_2D);
    	ilGenImages(1,&ilId);
    	ilBindImage(ilId);
    	ilLoadImage(filename);
    	m_w = ilGetInteger(IL_IMAGE_WIDTH);
    	m_h = ilGetInteger(IL_IMAGE_HEIGHT);
    	m_bpp = ilGetInteger(IL_IMAGE_BITS_PER_PIXEL)/8;
    	if(m_bpp = 32)
    		ilConvertImage(IL_RGBA,IL_UNSIGNED_BYTE);
    	else
    		ilConvertImage(IL_RGB,IL_UNSIGNED_BYTE);
     
    	glBindTexture(GL_TEXTURE_2D, m_glId);
        glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
    	if(detail == false)
    	{
    	    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST);
    	}
    	else
    	{
    		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    	}
    	m_glId = ilutGLBindMipmaps();
    	ilDeleteImages(1,&ilId);
    	glDisable(GL_TEXTURE_2D);
    }
    Le niveau de finesse n'est pas fabuleux mais ça ne demande qu'à être amélioré
    Pour utiliser la chose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Texture arbre;
    arbre.Init("matexture.png");
    ...
     
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, arbre.GetId());
    glBegin()...
    ...
    glEnd()...
    glDisable(GL_TEXTURE_2D);
    J'ai aussi fait une version héritée qui récupère les rgba de chaque pixel pour faire des effets si ça t'intéresse...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 93
    Par défaut
    Nickel , bien que ce soit le format .bmp qui m'intéresse , je vais regarder ca .
    Merci bien

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 32
    Par défaut
    Perso quand je télécharge un soft et que l'archive pèse 80 Mo parceque le gars utilise des BMP ça m'embète un peu.
    Donc ce que je te conseillerais c'est d'utiliser plutôt le PNG pour les textures ou tu veux du lossless.
    La somme de travail pour y parvenir est proche de 5 minutes, car il suffit de copier les fichiers sources donnés par exemple à la fin de cette page :
    http://tfc.duke.free.fr/coding/png.html

    le code est distribué sous une licence MIT/X11 donc permissif.

Discussions similaires

  1. Insérer une image en background sur bootstrap
    Par Schim59 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/11/2012, 10h05
  2. [SP-2010] Mettre une image en background sur le bandeau du haut
    Par tazamorte dans le forum SharePoint
    Réponses: 4
    Dernier message: 03/01/2011, 10h57
  3. getMouseX() sur une image et pas sur la fenetre?
    Par WeDgEMasTeR dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/04/2006, 17h06
  4. Réponses: 4
    Dernier message: 03/05/2005, 09h03
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo