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

Archive C/C++

 > 

Archives

 > 

OpenGL

 > 

opengl multitexturing->melanger 2 textures


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

opengl multitexturing->melanger 2 textures

dimanche 15 janvier 2006 à 00:54:57 | opengl multitexturing->melanger 2 textures

dletozeun

bonjour,

C'est la deuxieme fois que je poste pour le multitexturing mais cette fois ci ca se precise...
voila mon probleme:

J'essais , de melanger deux textures ( herbe et terre par exemple) en prametrant de degré de melange grace a la couleur d'une troisieme texture en niveau de gris.

voila la texture terre et la texture herbe:


je veux les melanger en parametrant le melange grace a la couleur de cette 3eme texture:


et obtenir ca:



Mais le probleme c'est que je vois pas comment faire sous opengl...

voila ce que je fais pour realiser ca, mais tout ce que j'obtiens c'est le produit des textures 0 et 2 sur la map et non le produit de 0 et 1 avec comme facteur de melange la coulouleur de 2

donc ici la texture nom[0] est la terre
                    nom[1] est l'herbe
                    nom[2] est la texture en niveau de gris

voila le code permetrant de parametrer le mode d'application des textures:
________________________________________________________________________________
                glActiveTextureARB( GL_TEXTURE0_ARB );
                glEnable( GL_TEXTURE_2D );
                glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
                glBindTexture(GL_TEXTURE_2D,nom[0]);
                glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
                glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
               
                glActiveTextureARB( GL_TEXTURE1_ARB );
                glEnable( GL_TEXTURE_2D );
                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS );
                glBindTexture(GL_TEXTURE_2D,nom[1]);
                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE );
                glBindTexture(GL_TEXTURE_2D,nom[2]);
                glTexEnvi( GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_TEXTURE );
                glTexEnvi( GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE );
                glTexEnvi( GL_TEXTURE_ENV,GL_COMBINE_ALPHA_ARB,GL_MODULATE );
________________________________________________________________________________
lundi 16 janvier 2006 à 11:13:15 | Re : opengl multitexturing->melanger 2 textures

KeniiyK

Membre Club
Salut, a mon avis tu es obligé de faire un algo en 2 passes.

Soit HERBE l'image d'herbe, TERRE l'image terre, DEG l'image degradé et qui sera appliqué à HERBE, DEG_INV l'image dégradé inversé, appliqué à TERRE et RESULT l'image finale.

on a RESULT = (HERBE*DEG + TERRE*DEG_INV) / 2

Algo :
-> première passe, appliquer HERBE*DEG (2 unité de texture...)
-> deuxieme passe, appliquer TERRE*DEG_INV avec une fonction de mélange qui fasse la moyenne...

Autre solution :
Connaissant tes images, pré-calcule les textures mélangées, en live dans le prog ou en tant que data du prog et applique les directement en simple passe et sans multi-texturing

KeniiyK
lundi 16 janvier 2006 à 13:28:20 | Re : opengl multitexturing->melanger 2 textures

luhtor

Le multi texturage peut faire ce dégradé, mais comme j'arrive meme pas à utiliser cet ARB de ... je peux pas tester.
jeudi 19 janvier 2006 à 19:10:11 | Re : opengl multitexturing->melanger 2 textures

Arnaud16022

Membre Club
Je pense que le plus simple est de faire un fragment shader...
genre :

uniform sampler2D myTexture0;
uniform sampler2D myTexture1;
uniform sampler2D myTexture2;
void main (void)
{
vec4 texval0 = texture2D(myTexture0, vec2(gl_TexCoord[0]));
vec4 texval1 = texture2D(myTexture1, vec2(gl_TexCoord[1]));
vec4 texval2 = texture2D(myTexture2, vec2(gl_TexCoord[2]));

gl_FragColor = texval2*0.5*(texval0 + texval1);
}
et pour chaque vertex tu charges les propriétés de tes textures
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 1.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0);
glMultiTexCoord2fARB(GL_TEXTURE2_ARB, 0.0, 1.0);

mais bon faut que ta carte supporte les shaders v1
si elle supporte le multitexturing elle devrait aussi connaitre ca de toute facon

++
ad

_______________________
Omnia vincit labor improbus
vendredi 20 janvier 2006 à 22:31:55 | Re : opengl multitexturing->melanger 2 textures

dletozeun

Moui ca c'est pas certain que ma carte graphique supporte ca...et puis j'ai envie que ca soit supportable sur plein de configs...
Et c'est quoi ce gl_FragColor ??

Keniiyk> c'est vrai qu'au pire je peux faire ca... je vais essayer me mettre ca en place.

Merci a tous!

vendredi 20 janvier 2006 à 23:52:07 | Re : opengl multitexturing->melanger 2 textures

dletozeun

bon en fait j'vais deja essayé ca mais je pensais plus que c'est pas possible...
En effet je peux pas multiplier l'herbe avec la texture en niveaux de gris, puis a coté multiplier la texture sol avec la texture de niveaux de gris en negatif pour ensuite les ajouter....
opengl permet seulement d'utiliser le fragment precedent ( affiché a l"ecran) ou bien une texture pour le (la) multiplier avec une autre mais en utilisant source0 et source1
En clair je peux pas faire source0 + source1*source2
ou source0 serait le fragment precedent (deja dans le frame buffer, c a dire herbe*niveaux de gris) , source1 la texture sol et source2 la texture en niveau de gris en negatif....
Mais que source0*source1 ou source0 +source1 ( et bien d'autres choses qui sont pas interessantes ici...)

Bref c'est difficile a expliquer et dur comprendre pour ceux qui sont pas dedans...

lundi 23 janvier 2006 à 09:32:43 | Re : opengl multitexturing->melanger 2 textures

KeniiyK

Membre Club
Salut,
"En clair je peux pas faire source0 + source1*source2" , si justement avec un algo en deux passe (ce qui correspondrai au signe +...)

KeniiyK
vendredi 27 janvier 2006 à 22:00:23 | Re : opengl multitexturing->melanger 2 textures

dletozeun

oui mais avec les cartes graphiques actuelle il doit avoir moyen avec les extensions de opengl de faire ca en une seule passe...donc je cherche toujours.


Cette discussion est classée dans : gl, texture, env, arb, gltexenvi


Répondre à ce message

Sujets en rapport avec ce message

OpenGL map blending [ par dletozeun ] bonjour, Dans mon projet je genere un terrain sur lequel j'applique une texture (roche par exemple) avec opengl. Maintenant je voudrais gerer le mult Listes OpenGL : Problème de texture [ par smoove5198 ] Bonjour, Je travaille actuellement sur un projet en opengl. Pour des raisons de performence je me suis ecrit une classe qui crée du texte a partir d' TEXTURE SUR UNE SPHERE TOURNANTE [ par Batman60 ] bonsoirj'ai un problème de texture sur une spherela texture ne  tourne pas et ne prend pas la forme de la sphere ,mais la sphere tournevoic image non chargée [ par aurelivs ] bonjourje cherche a faire une appli en C++ et OpenGL pour charger une image et afficher cette image (puis la transformer). cependant je n'arrive pas à CLASSE SDL JPEG (OPENGL) [ par Batman60 ] au secours je n'arrive pas à afficher la texture voulue sur les faces choisie du cubeLE CLASSE .H: class Csdl{    public:     Csdl();&n Texture openGl [ par neodelphi ] Bonjour tout le monde, j'essaye désespérément d'ajouter des textures dans mon projet openGl, mais je devient fou... J'ai écrit une classe qui me perm Probléme de textures pour un loader 3DS [OpenGl,DevIl] [ par juliendemomaker ] Bonjour ! Voici mon probléme, je conçois actuellement un loader .3ds en C++ avec OpenGl, le probléme est que quand je charge un model 3D quelconque a problème de chargement de bitmap [ par Batman60 ] bonjour y a pas moyen de charger des bitmaps avec  la fonction :gluBuild2DMipmaps(GL_TEXTURE_2D, 3, BMP.bmWidth, BMP.bmHeight,    GL_RGB, GL_UNSIGNED_ Pb de FRONT et BACK buffer avec texture [ par gastoudou ] Bonjour à tous,Je suis en train de faire un projet en OpenGL pour l'école sur un puzzle 2D. Il y a 16 cases mélangées et on doit les remettre à leur p labyrinthe en 3D sytle ecran veille windows [ par gastoudou ] Bonjour à tous,Et oui encore moi pour une question, que dis-je, une mission pour une âme charitable.Je suis en train de faire un labyrinthe en 3D styl


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,780 sec (4)

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