Retourner au sujet

  Message initiale datant du 31 August 2010 à 23h 17mn 26s

bon alors pour les textures c'est pas très compliquer opengl fait casiment tout
sa se fait en deux étapes:
allocation mémoire en vram et création d'une id pour la texture
utilisation de la texture a pellant l'id ...

bon je supose que tu sais déjà comme est les principe d'une texture ? enfin ... c'est pas compliquer tu crée un tableau "1D", ou tu y stocke les donner, de dimention width*height+1
pour se localiser, la position = x+height*y plus ou moin, faut prendre uassi en compte que tu utilise 3 ou 4 "channel" on va dire le format ( 8, 16, 24, 32 restpectivement, noir/blanc, noir/blanc/alpha, rgb oou yuv, argb ou rgba) donc ton tableau est égales a width*height*(format/8)+1, c'est toujours pareil pour se localiser (x+hieght*y)*(format/8), et pour retrouver les couleurs tu fait juste position+x ou x < format/8, pas trop compliquer jusque la ? wink
c'est juste la partie software ( chargement ) après pour passer a opengl:

Code c++ :


            glEnable(GL_TEXTURE_2D);
            glGenTextures (1, & gl); // gl est de type GLuint soit l'id de la texture
            glBindTexture (GL_TEXTURE_2D, gl);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // option a la screunieugnieuh sa marche bien dans mais example donc ...
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
            glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
            glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
            glDisable(GL_TEXTURE_2D);
            //spécification suivant le format
            switch(format)
            {
                case TXFMT_LUMINANCE:
                    glTexImage2D(GL_TEXTURE_2D, 0, fmt, original.width, original.height, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, buffer);
                break;
                case TXFMT_LUMINANCE_ALPHA:
                    glTexImage2D(GL_TEXTURE_2D, 0, fmt, original.width, original.height, 0, GL_LUMINANCE_ALPHA, GL_UNSIGNED_BYTE, buffer);
                break;
                case TXFMT_RGB:
                    glTexImage2D(GL_TEXTURE_2D, 0, fmt, original.width, original.height, 0, GL_RGB, GL_UNSIGNED_BYTE, buffer);
                break;
                case TXFMT_RGBA:
                    glTexImage2D(GL_TEXTURE_2D, 0, fmt, original.width, original.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
                break;
            }


supression de la texture:

Code c++ :


            !glIsTexture(gl)) ? glDeleteTextures(1,&gl) : void(); // plus rapid qu'un if, il parais que sa utilise des instruction asm ...
            gl = 0;


et l'utilisation:

Code c++ :


                    glEnable(GL_TEXTURE_2D);
                    glBindTexture(GL_TEXTURE_2D, tex->glTexture());
                    //rendue de l'object
                    glDisable(GL_TEXTURE_2D);


le probleme c'est qu'il faut spésifier qu'elle endroi de la texture sera "plaquer" sur telle polygone, pour ça on utilise << glTexCoord3i(0,1,0); >> ou 0 c'est le bord supérieur haut ou gauche et 1 le bord inférieur ou droit

c'est bon j'y suis pas aller trop fort jusque la ? smile

sinon avec un peut de chance je ne suis pas dans le même internat que celui de l'ans dernier ou je ne captais pas la wifi, mais la rumeur cour que le pions qui avais la wifi les désactiver ... mais tkt c'est le premier truc que je teste yikes

ps: désoler pour le "-1" je voulais faire une énumération mais je suis partie dans un discour wink
oh et sa ne fait que 3semain que je bosse sous opengl donc je ne connais pas tout non plus ... (depuis le sleekthink)

edit: je poste le code demain ... et je feurais un effort, les sources en "français" + doc/commentaire ...



Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
881 membres
1427 sujets
11117 messages
Dernier membre inscrit: Bidule
26 invités en ligne
Aucun membre connecté
RSS Feed