Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : opengl multitexturing [ Archives / OpenGL ] (dletozeun)

jeudi 25 août 2005 à 20:33:06 | opengl multitexturing

dletozeun

bonjour,

J'ai reussi a mettre en place le multitexturing avec opengl, j'obtiens un melange homogene entre  textures sur un polygone mais le probleme est que l'eclairage se desactive des que j'utilise les coordonnées de textures :
 glMultiTexCoord2fARB( GL_TEXTURE0_ARB, u, v);

si je reviens aux coordonnées classiques avec:
glTexCoord2f( u, v);

la l'eclairage reviens, mais bien sur le multitexturing n'apparait plus!

Comment faire du multitexturing avec de l'eclairage?? Merci

jeudi 25 août 2005 à 22:59:10 | Re : opengl multitexturing

NoRabbit

aucune idée, je n'ai pas vraiment eu le temps de chercher.
t'as regardé le tuto de NeHe ? (nehe.gamedev.net - tutorial 22)

sinon la doc sur opengl.org

j'ai parcouru pas mal de doc sur le multitexturing il y a qques jours mais je n'ai jamais vu ce problème (je ne cherchais pas de côté là non plus)

je sais que dans son tuto, NeHe désactive la lumière avant d'effectuer le multitexturing et la réactive après, mais ça n'a sûrement rien à voir, je crois que c'est nécessaire pour le bump mapping...
enfin bref, j'essaie de te donner des pistes... mais je ne peux malheureusement pas t'en dire plus.

Si tu trouve un réponse, aussi conne soit elle, postes là ici, ça m'intéresse, tkx.

.:. NoRabbit .:.

vendredi 26 août 2005 à 10:47:31 | Re : opengl multitexturing

luhtor

"Lorsqu'on applique une texture à un fragment, seule la couleur principale est combinée aux couleurs des texels. La couleur principale peut etre le résultat de calculs d'éclairage ou glColor" Donc normalement il n'y a pas de problème.

Tiens, pourquoi tu utilises l'extension ARB ? Dans la 1.4, c'est par défaut. Donc on utilise
glMultiTexCoord2*(GL_TEXTURE{0..n}, x, y);

Post ton code, on verra mieux.

samedi 27 août 2005 à 00:28:09 | Re : opengl multitexturing

dletozeun

Ben en fait je me suis inspiré d'une source existante ou il le multitexturing est implémenté mais pas l'eclairage qui va avec! je vous mets les paries interessantes du source:


void initARBTextures()
{
                glActiveTextureARB( GL_TEXTURE0_ARB );
                //glEnable( GL_TEXTURE_2D );
                glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );

                glActiveTextureARB( GL_TEXTURE1_ARB );
                //glEnable( GL_TEXTURE_2D );

                glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB );
                glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_INTERPOLATE_ARB );

                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB );
                glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR );

                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE );
                glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR );

                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_PRIMARY_COLOR_ARB );
                glTexEnvi( GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_COLOR );
}


j'ai un gros prb avec cette focntion ! Je la comprends que tres peu et sur internet pas moyen de trouver de la doc qui explicite tous ces paramètres (enfin j'ai peut etre trouvé sur le site des developpeurs nvidia...mais faut que je telecharge un pdf qui a l'air lourd pour mon 56K) Mais cette fonction donne un truc trop bizarre au rendu! En fait pour tester j'ai decider de melanger 2 textures sur tous les polygones d'un objet et ce qui se passe c'est que toutes les zones qui sont normalement eclairées sont recouverte de la 1ere texture et toutes les zones d'ombres sont recouvertes par la 2eme texture! Mais il n'y a pas d'eclairage a part cela.

Sinon g trouvé un autre systeme de paramétrage qui me donne ce que je veut en melangeant de facon homogene les 2 textures:

void initARBTextures()
{
                glActiveTextureARB( GL_TEXTURE0_ARB );
                //glEnable( GL_TEXTURE_2D );
                glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE );

                glActiveTextureARB( GL_TEXTURE1_ARB );
                //glEnable( GL_TEXTURE_2D );


                glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_EXT);
                glTexEnvf (GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_INCR);
}

il prends bcp moins de place! Mais la encore de nouveaux parametres qui m'inspirent pas tellement...


la fct de rendu ne contiient rien de special a par cette fct la glMultiTexCoord2*(GL_TEXTURE{0..n}, x, y); qui remplace le classique glTexCoord2f(u,v);

Sinon vous voyez que dans les fcts precedentes g mis tous les
glEnable( GL_TEXTURE_2D ); en commentaires . Je n'ai pas compris du tout pourquoi dans tous les codes implementant le multitexturing il reactivait constamment les textures 2D! Surtout que en ne les mettant pas je n'ai precu aucun changement!

Et la en plus je viens de m'aprecevoir que j'avais laissé un
glBindTexture(GL_TEXTURE_2D,nom[mapFaces[a].matID]);
avant le dessin des polys et c'est ce qui me permet d'obtenir un melange homogene parce que si je l'enleve je ne vois plus que une texture! Bref c la mega bidouille ce truc, j'y comprends que dalle! 8O


Et l'extension ARB je suis obligé de l'utiliser pour a ctiver les textures 0 et 1 et pour paramétrer le melange...efin je crois...

Je suis aller voir le tut de nehe mais g rien trouvé d'interessant pour resoudre mon prb...et sur opengl.org c'est le néant complet!! Mais qu'est ce que c'est que ce site! Les seules liens utiles sont tous morts! Le lien pour la derniere version de opengl mort aussi!

Mais merci pour votre soutient!


samedi 27 août 2005 à 09:17:58 | Re : opengl multitexturing

luhtor

Bon alors deja, l'extension ARB, du balais :) partout !!

Sinon voila ce que me dit le red book:
Tu vas voir que ya pas bcp de point commun avec ton code.

GLuint texNames[2]; // ca, ca va
glGenTextures(2, texNames);
glBindTexture(GL_TEXTURE_2D, texNames[0]);

// en fait on créer d'abord une texture classique qu'on assigne a la fin comme texture0 pour le multitexturage.

glTexImages2D(GL_TEXTURE_2D, 0 ,GL_RGBA, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, ton_image1);
// bon je passe sur les glTexParameter...GL_NEAREST et GL_REPEAT etc...

glBindTexture(GL_TEXTURE_2D, texNames[1]);
glTexImages2D(GL_TEXTURE_2D, 0 ,GL_RGBA, 32, 32, 0, GL_RGBA, GL_UNSIGNED_BYTE, ton_image2);

// bon maintenant on active le multi texturage:
glActiveTexture(GL_TEXTURE0): // unité 0 de texturage
glEnable(GL_TEXTURE_2D); // on l'active
glBindTexture(GL_TEXTURE_2D, texNames[0]); // on la lit a la première texture
glTexEnvi(...., GL_REPLACE);

glActiveTexture(GL_TEXTURE1); // on sélectionne l'unité 1
glEnable(GL_TEXTURE_2D); // on l'active
glBindTexture(GL_TEXTURE_2D, texNames[1]); // on la définie.
glTexEnvi(..., GL_MODULATE); // mode d'application

voila et les commentaires qu'ils donnent avec (pas tous):
Dans la première partie, deux objets de texture ordinaires sont mis en place. Dans la deuxième partie, les deux objets de texture sont utilisés pour composer deux unités de texture.

samedi 27 août 2005 à 13:31:26 | Re : opengl multitexturing

NoRabbit

faut que tu me dises où trouver le header gl.h qui contient les fonctions de multitexturing.
J'ai trouvé nul part la dernière version de cet header.

J'ai trouvé une sorte de pack qui contient dex fichiers (glprocs.c et glprocs.h) à inclure dans nos projets qui charge automatiquement les extensions contenues dans les versions 1.2 ; 1.3 ; 1.4 et 1.5

dans tous les cas, il faut charger cette extension.

.:. NoRabbit .:.

samedi 27 août 2005 à 13:33:30 | Re : opengl multitexturing

NoRabbit

pour ceux que ça intéresse, l'adresse de ce pack : [ Lien ] (site officiel)

.:. NoRabbit .:.

samedi 27 août 2005 à 16:00:42 | Re : opengl multitexturing

dletozeun

Ah bon pas d'extensions ARB! Ben tant mieux alors je vais essayer...

Mias le prb c'est que devcpp ne trouve pas de fct
glActiveTexture() dans les headers de opengl il ne trouve que glActiveTextureARB() !!

Et le code qsue tu me propose c'est le mien suaf que tu remplace la fct glActiveTextureARB() par glActiveTexture() !! Sinon pour la creation de la texture je fais toujours la methode classique...

NoRabbit les fcts extensions de opengl sont defines dans l'header glext.h dans le repertoire include\gl si tu as devcpp.

Mais en fait tout leprb du non eclairage setrouve dans le prametrage du multitexturing dans la fct initARBtextures() que je vous est donné parce que des que je ne l'utilise plus je n'ai plus de multitexturing mais l'eclairage est la...

samedi 27 août 2005 à 16:50:11 | Re : opengl multitexturing

NoRabbit

ok pour glext.h, je sais. Ce que je cherchais à comprendre, c t comment accéder au multitexturing sans charger les fonctions nécessaires. Je crois maintenant qu'il est toujours nécessaire de les charger.

Pour ton problème avec la lumière, tu dois avoir raison, c dans cette fonction et plus précisément cette fonction: "
glTexEnv*(...)"
faut faire des tests
http://www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texenv.html

.:. NoRabbit .:.

dimanche 28 août 2005 à 10:58:19 | Re : opengl multitexturing

dletozeun

oui je confirme le prb venait de cette fct, j'ai recherché de la doc sur glTexEnv* et j'ai reussi a la paramétré de facon a avoir un melange des 2 textures tout en gardant l'eclairage...

Mais le nouveau prb c'est que c'est hyper sombre! Pas de trouver l'interrupteur! lol! J'ai beau changer les caractérsitiques speculaires, ambientes du matériau et de la lumiere, rien y fait...

Comment faites vous pour augmenter la luminosité d'une scene?



1 2

Cette discussion est classé dans : opengl, coordonnées, textures, multitexturing, eclairage


Répondre à ce message

Sujets en rapport avec ce message

openGL : Coordonnées d'un objet par defaut [ par Amanobuo ] bonjour, Sous openGL, lorsque je cree une ligne ou un carrée avec mes vertex, la position par defaut est (0,0,0) et alors je tape mes valeurs par rapp OpenGL et 2D [ par dletozeun ] bonjour,Je voudrais faire de la 2D avec openGL...Je voudrais me ramener a un systeme de coordonnées cartesiennes du type:origine: coin superieur gauch Coordonées souris OpenGL [ par goutbouyo ] Salut,Je voudrais récupérer les coordonnées du curseur de ma souris dans ma fenêtre opengl.J'ai réussi à récupérer les coordonnés de la souris dans la Multitexturing OpenGl [ par goutbouyo ] Salut,Je charge une map BSP dans un jeu fait en OpenGl.Il y a donc du multitexturing.Le problème c'est quand j'affiche mes persos en MD2, j'active la OpenGl:Prob de textures PPM [ par Florian29 ] Salut!Voilà j'ai un problème avec les images ppm pour mes programmes openGl. J'ai développé des programme à la fac qui utilisent des textures ppm. Che Au secours opengl !!! [ par seb_nachos ] Bonjour, j'ai un gros probleme sur l'opengl ! Je dessine sur mon interface je recupere les coordonnées pixels, puis je les normalise par rapport au ce Souris sous OpenGL + Glut [ par mondrone ] J'ai vu qu'il y avait des fonctions permettant de gérer les appuis de boutons de souris ou de touche de clavier qui donnaient au passage les coordonné OpenGL eclairage [ par dletozeun ] bonjour,J'aimerais savoir comment dessiner un objet en 3D avec openGL en appliquant des groupes de lissages a l'objet.C a dire que je voudrais que cer OpenGL: problemes des textures [ par dletozeun ] bonjour,dans mon projet actuel sous devcpp j'affiche un objet 3D avec opengl en utilisant  GL_TRIANGLE_STRIP pour optimiser la vitesse d'affichage.... A laide eclairage et texturing opengl !!Problemes!! [ par zerailkiller ] Bonjour a tous, voila je suis en train de developper un petit doom like (je suis debutant sous opengl) .Jai fais un cube map et lorsque j applique ma


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,546 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.