begin process at 2012 05 30 00:40:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

OpenGL Transparence BMP Image images


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

OpenGL Transparence BMP Image images

mercredi 12 avril 2006 à 22:58:19 | OpenGL Transparence BMP Image images

maladedede

Membre Club
Bonjour je fais un jeu avec openGL
et je voudrais savoir comment fair pour que certainnne partie d'une image bmp soit transparente.

Merci

MaLaDeDeDe

jeudi 13 avril 2006 à 08:26:35 | Re : OpenGL Transparence BMP Image images

platon179

Membre Club
Réponse acceptée !
Salut :)

Le plus simple est d'utiliser la transparence alpha, voici comment j'ai fait ca dans mon projet :

Tu charges ton image BMP, avec un canal alpha... Si tu n'as pas de canal alpha, tu peux toujours le générer à la volée lorsque tu charges ton image, c'est ce que je fais (tu dis par exemple que tout ce qui est noir doit être transparent, et tu ajoutes une composante de couleur en fonction de ceci)....

Après, pour l'affichage, tu peux faire comme ceci :
glAlphaFunc(GL_GREATER, 0.0f);
glEnable(GL_ALPHA_TEST);
glBegin(GL_QUADS);
   // Affichage de ton quadrilatère, texturé avec ton image BMP
glEnd();
glDisable(GL_ALPHA_TEST);


Tout simplement :)
Si t'as d'autres questions, hésite pas ;)
@+++

lundi 17 avril 2006 à 04:58:27 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
Mais comment ca fait pour savoir quels sont les parties de l'image bmp qui sont transparente ?

MaLaDeDeDe

lundi 17 avril 2006 à 04:59:32 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
ps: et merci de bien me reponde

MaLaDeDeDe

lundi 17 avril 2006 à 05:02:15 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
Car les images BMP n'ont pas de précision sur l'alpha des pixels

MaLaDeDeDe

lundi 17 avril 2006 à 05:05:18 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
A NON ESQUSE J'MAL LUT !!
Comment fait'on pour dire que tout ce qui est noir est transparent montre moi un exemple avec des detail stp
Merci beaucoup..

MaLaDeDeDe

lundi 17 avril 2006 à 08:24:27 | Re : OpenGL Transparence BMP Image images

platon179

Membre Club
Réponse acceptée !
Salut,
Voici le code que j'utilise pour ajouter un canal alpha a une image :

    unsigned char *bitmapWithAlpha = (unsigned char *)malloc(largeur * hauteur * 4);

    for (unsigned int src = 0, dst = 0; src < largeur * hauteur * 3; src +=3, dst +=4)
    {
        if (img[src] == 0 && img[src+1] == 0 && img[src+2] == 0)
            bitmapWithAlpha[dst+3] = 0;
        else
            bitmapWithAlpha[dst+3] = 0xFF;

        bitmapWithAlpha[dst] = img[src];
        bitmapWithAlpha[dst+1] = img[src+1];
        bitmapWithAlpha[dst+2] = img[src+2];
    }


Sachant que le tableau img (de taille largeur de ton image * hauteur de ton image * 3) est le tableau contenant les données sans canal alpha, et bitmapWithAlpha est le tableau contenant la même image, mais avec un canal alpha, et transparente partout où c'est noir.... Pour modifier la couleur sur laquelle se fera la transparence, tu n'as qu'à modifier le premier test dans le for, là je teste si les trois composantes valent 0, donc si c'est noir... Si tu veux que la transparence se fasse sur le couleur verte pure, tu feras :

if (img[src] == 0xFF && img[src+1] == 0 && img[src+2] == 0)

Les couleurs sont dans l'ordre standard R G B

Voilà, @+
Bonne journée
lundi 17 avril 2006 à 15:31:02 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
Merci j'ai pas encore testé mais si ca marche pas je te le dirais
Je vais utiliser cela betement et quand j'aurais finit de lire mon livre ur opengl je vais regarder le fonctionnement de ta source

merci

MaLaDeDeDe

lundi 8 mai 2006 à 00:02:48 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club
Mais comment charge tu tes bmp ?
car l maniere dont je charge mais bmp ne me donne pas de tableau mais des texture.

MaLaDeDeDe

lundi 8 mai 2006 à 01:12:15 | Re : OpenGL Transparence BMP Image images

maladedede

Membre Club

J'ai une fonction qui charge en RGB sol2.bmp et met le Unsigne char dans la structure image1. Au final la sol2.bmp est dedans: image->data ( c'est une structure).

GLuint texturealpha;

ImageLoad("texture/sol2.bmp", image1);
   unsigned char *SolAlpha = (unsigned char *)malloc(64 * 64 * 4);

    unsigned int src = 0, dst = 0; while(src < 64 * 64 * 3){ src +=3, dst +=4;
    {
        if (image1->data[src] == 0 && image1->data[src+1] == 0 && image1->data[src+2] == 0)
            image1->data[dst+3] = 0;
        else
            SolAlpha[dst+3] = 0xFF;

        SolAlpha[dst] = image1->data[src];
        SolAlpha[dst+1] = image1->data[src+1];
        SolAlpha[dst+2] = image1->data[src+2];
    }}


  glGenTextures(1, &TextureAlpha);
  glBindTexture(GL_TEXTURE_2D, TextureAlpha);
  glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
  glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
  glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexImage2D(GL_TEXTURE_2D, 0, 3, image1->sizeX, image1->sizeY, 0,
                               GL_RGBA, GL_UNSIGNED_BYTE, SolAlpha);

 


et quand j'affiche l'image le noir est toujours la( il n'est pas transparent):

  glBindTexture(GL_TEXTURE_2D,TextureAlpha);
  glAlphaFunc(GL_GREATER, 0.0f);
  glEnable(GL_ALPHA_TEST);
  glBegin(GL_QUADS);
  glTexCoord2f(10,10);
  glVertex3f(75,0,-75);
  glTexCoord2f(-10,10);
  glVertex3f(-75,0,-75);
  glTexCoord2f(-10,-10);
  glVertex3f(-75,0,75);
  glTexCoord2f(10,-10);
  glVertex3f(75,0,75);
  glEnd();
  glDisable(GL_ALPHA_TEST);

MaLaDeDeDe


1 2

Cette discussion est classée dans : images, image, opengl, bmp, transparence


Répondre à ce message

Sujets en rapport avec ce message

mosaique de bmp [ par momow ] Bonjour, je programme sous BC++6 et j'aimerais afficher dans une fenetre/form des images bmp qui se superposeraient au fil du temps.Par quel moyen pro Conversion image BMP [ par emrod ] Salut, j'aimerais convertir une image BMP 16 bits en image BMP 24 bits, est-ce qu'il existe une fonction ou un programme pour faire ça ?En fait, j'ai !!! Affichage image avec transparence !!! [ par yoyo269 ] Bonjour à toutes et à tous,je souhaiterais pouvoir afficher des images cliquables dans un programme Win32. Les images (gif ou png ou tiff) à afficher comparaison images bmp [ par nicolovitch ] bonjour à tous, Voila mon dernier probleme, je possede plusieurs anciennes images bmp dans un meme dossier, je dois comparer une nouvelle image à t c++, opengl, charger image pour texture [ par profiter ] bonjour je travaille avec opengl avec visual studio 2010 je dessine une scene en 3D je veux utiliser des images .png ou .jpeg ou .gif comme texture j' mauvaise qualite d'image OPENGL [ par oswa ] Bonjour, je suis entrain de réaliser un programmme en C++ sous windows qui utilise OPENGL, ce programme permet de dessiner de piéces mécamique à par pipeline opengl [ par fleurdelys77 ] Salut à tous, j'ai une image en entré après avoir exécuté un calcule j'extrairais des parties de cette image (un ensemble de triangle dispersé) et je Afficher une partie de l'image BMP [ par faizazouari ] Salut. J'ai rencontrée un problème lors l'affichage d'une partie de l'image original(bmp) de résolution 480x640.Je veux Afficher uniquement une partie Image BMP [ par jeanphilippe37 ] Bj, je voudrais mettre dans un programme en C 1 ou plusieurs images. Dans le mode "windows" ( différent du mode console). Comment dois-je faire ?


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales