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 :

texture opengl-sdl


Sujet :

OpenGL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut texture opengl-sdl
    hello
    J'ai commencé mon apprentissage de opengl il y a 2 jours et je rencontre de problemes
    J'en rencontre plusieurs mais il y en a un qui m'enerve au plus au point

    Je n'arrive pas a appliquer une texture. Ca a pourtant l'air simple au vu des tutos disponibles sur le net.

    Mon plan apparait bien en blanc mais aucune texture n'y ai intégré. Je precise que l'image est bien chargé, si elle n'existe le programme plante.
    Je travail sous linux, voici mon code avec les includes au acs ou quelqu'un voudrait tester.

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    #include "GL/gl.h"
    #include "GL/glut.h"
    #include "SDL/SDL.h"
    #include "SDL/SDL_image.h"
    #include <iostream>
     
    #define WIDTH 640
    #define HEIGHT 480
     
    void Display();
    void Reshape(int,int);
    void Init();
    SDL_Surface *fenetre;
     
    int main(int argc, char* argv[])
    {
    	SDL_Init(SDL_INIT_VIDEO);
     
    	SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
    	SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16);
     
    	fenetre = SDL_SetVideoMode(640,480,32, SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE | SDL_HWSURFACE
    		| SDL_HWACCEL);
     
    	Init();
    	Reshape(640,480);
    	bool quit = false;
     
    	while(!quit)
    	{
    		SDL_Event event;
    		if(SDL_PollEvent(&event))
    		{
    			switch(event.type)
    			{
    			case SDL_QUIT:
    				quit = true;
    				break;
     
    			case SDL_VIDEORESIZE:
    				Reshape(event.resize.w,event.resize.h);
    			}
    		}
     
    		Display();
     
    	}
    	return 0;
    }
     
    void Display()
    {
    	glClearColor(0,0,0,0); // selectionne la couleur noire (qui est celle par défaut)
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    	gluLookAt(4,3,3,0,0,0,0,1,0);
     
    	GLuint texture_name;
    	GLuint objet;
    	SDL_Surface * texture;
    	// ---- Création d'un objet de texture. ------------------------------------------------
    	glGenTextures (1, & texture_name);
    	glBindTexture (GL_TEXTURE_2D, texture_name);
    	// Paramétrage de la texture.
    	glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    	glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    	glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    	// Chargement du fichier.
    	texture = IMG_Load ("SDL/small_tux.bmp" );
    	// Jonction entre OpenGL et SDL.
    	glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0,
    	GL_RGBA, GL_UNSIGNED_BYTE, texture-> pixels);
    	// ---- Fin de création de l'objet de texture. -----------------------------------------
    	// ...
    	// Création d'un objet par l'utilisation d'une liste d'affichage.
    	objet = glGenLists (1);
    	glNewList (objet, GL_COMPILE);
    	// Avant d'appeler les fonction glVertex..., on indique quelle texture va être associée à l'objet.
    	// On active l'application de texture...
    	glEnable (GL_TEXTURE_2D);
    	// ... et on indique quelle texture utiliser (celle qui a été créée précédemment).
    	glBindTexture (GL_TEXTURE_2D, texture_name);
    	// On peut enfin créer un objet (ici un simple carré).
    	glBegin (GL_QUADS);
    		glTexCoord2f (0.0, 0.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (1.0, 1.0, -2.0);
    		glTexCoord2f (0.0, 5.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (-1.0, 1.0, -2.0);
    		glTexCoord2f (5.0, 5.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (-1.0, -1.0, -2.0);
    		glTexCoord2f (5.0, 0.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (1.0, -1.0, -2.0);
    	glEnd ();
    	// Fin de l'application de la texture.
    	glDisable (GL_TEXTURE_2D);
    	// Fin de la liste d'affichage.
    	glEndList ();
     
    	glEnd();
     
    	glCallList(1);
     
    	SDL_GL_SwapBuffers();
    }
     
    void Reshape(int w, int h)
    {   
    	glViewport(0,0,w,h);
    	glMatrixMode(GL_PROJECTION); // Choisit la matrice de projection
    	glLoadIdentity();
    	gluPerspective(45.0,(float) w/h,1.,10.);
    }
     
    void Init()
    {
    	glShadeModel( GL_SMOOTH );
    	glClearColor(0.0,0.0,0.0,0.0);
    	glClearDepth(1.0);
    	glEnable( GL_DEPTH_TEST );
    	glDepthFunc( GL_LEQUAL );
    	glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST );
    }
    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    j'ai essayé d'autre code sensé appliquer comme texture une sdl_surface a un objet opengl

    Entre autre celui present a cette adresse:
    http://www.gamedev.net/community/forums/topic.asp?topic_id=328920

    Mais jen'ai toujours que des plans blanc ...

  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut Re: texture opengl-sdl
    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
    GLuint texture_name;
    GLuint objet;
    SDL_Surface * texture;
    // ---- Création d'un objet de texture. ------------------------------------------------
    glGenTextures (1, & texture_name);
    glBindTexture (GL_TEXTURE_2D, texture_name);
    // Paramétrage de la texture.
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    // Chargement du fichier.
    texture = IMG_Load ("SDL/small_tux.bmp" );
    // Jonction entre OpenGL et SDL.
    glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, texture->w, texture->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture-> pixels);
    // ---- Fin de création de l'objet de texture. -----------------------------------------
     
    // Création d'un objet par l'utilisation d'une liste d'affichage.
    objet = glGenLists (1);
    glNewList (objet, GL_COMPILE);
    // Avant d'appeler les fonction glVertex..., on indique quelle texture va être associée à l'objet.
    // On active l'application de texture...
    glEnable (GL_TEXTURE_2D);
    // ... et on indique quelle texture utiliser (celle qui a été créée précédemment).
    glBindTexture (GL_TEXTURE_2D, texture_name);
    // On peut enfin créer un objet (ici un simple carré).
    glBegin (GL_QUADS);
    	glTexCoord2f (0.0, 0.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (1.0, 1.0, -2.0);
    	glTexCoord2f (0.0, 5.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (-1.0, 1.0, -2.0);
    	glTexCoord2f (5.0, 5.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (-1.0, -1.0, -2.0);
    	glTexCoord2f (5.0, 0.0); glNormal3f (1.0, 1.0, 0.0); glVertex3f (1.0, -1.0, -2.0);
    glEnd ();
    // Fin de l'application de la texture.
    glDisable (GL_TEXTURE_2D);
    // Fin de la liste d'affichage.
    glEndList ();
     
    // en trop ->>> glEnd();
    tout cela tu dois le mettre dans l'init, tu ne le fait qu'une fois, ensuite tu as juste à appeler la liste d'affichage et faire afficher le tout :
    glCallList(1);
    SDL_GL_SwapBuffers();

    par contre tu charges ton image et tu l'envoie à opengl mais tu lui dis qu'il s'agit d'une image RGBA hors tu n'en sais rien, il faut lire les informations de l'image (nombre de bits par pixels, nombre de composantes, ect...)
    à mon avis tu remplace ton glTexImage2D par celui qui suis et ça devrait aller mieux :
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture->w, texture->h, 0, GL_RGB, GL_UNSIGNED_BYTE, texture->pixels);

    sinon essaies éventuellement d'ajouter ceci à ton code :
    glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

    et ci cela ne fonctionne toujours pas vas voir les tuts ici sur nehe :
    http://nehe.gamedev.net/
    cela t'aidera surement plus que le forum gamedev, et moi
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    il est pas mal ce site merci.

    Sinon les 2 modifs dont tu parle n'ont pas permis d'afficher la texture. :/

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Je t'invite à consulter les post-it du forum, ils référencent tous les deux des liens vers divers sites, l'un rassemble les liens vers des sites qui proposent des tutoriaux, des exemples, ect.. tandis que l'autre propose des liens vers des bibliothèques qui peuvent faciliter le développement d'un projet

    j'espère que tu trouveras la solution à ton problème des les tutorieux de nehe ou d'ailleurs
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    j'etais deja allé faire un tour sur le sujet comportant les liens.

    Le probleme c'est de trouver ds tutos qui explique comment appliquer une texture avec un sdl_surface de sdl.

    Les seul que j'ai trouvé ne fonctionne pas chez moi et je n'arrive pas a comprendre pourquoi :/

  7. #7
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Comme beaucoup de monde je pense que tu n'as pas remarqué que dans les tutoriaux de nehe il y a plusieurs portages
    Le tutorial sur le texturing (le 6) existe en version Linux/SDL, regarde tout en bas de la page vers le milieu des liens

    normalement pour qu'il compile sous windows il faut ajouter l'include <windows.h> avant les autres mais j'ai aussi du ajouter l'include <gl/glext.h> pour qu'il reconnaisse la définition de GL_BGR
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    Ca tombe bien je suis sous linux

    Je vais voir ca et vous tiens au courant


    edit ---
    bonne nouvelle

    J'ai testé le code de nehe et il fonctionne parfaitement. J'ai alors cherché la difference entre les 2 codes mais je n'ai rien trouvé réglant mon probleme.

    En faite l'erreur se situé au niveau de la taille de l'image. J'ai fait quelque test et il semblerait qu'il faille qu'elle soit un multiple de 2 (ah le binaire ).
    C'est ecrit dans le tuto en plus

  9. #9
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Je dirais même plus, les dimensions des images doivent être en puissances de 2

    Mais ce n'est plus tout à fait vrai aujourd'hui, grâce à l'extension GL_ARB_texture_non_power_of_two, sauf que la carte et les drivers opengl doivent le supporter et il faut savoir utiliser les extensions, quand tu te sentiras prêt tu n'auras qu'à regarder les tutoriaux à ce sujet

    en attendant, content que cela fonctionne et que tu ais trouvé la raison pour laquelle cela ne fonctionnait pas chez toi

    logiquement il suffit que tu changes ton image et ton code fonctionne non ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    oui puissance de 2, je m'étais trompé de mot

    Oui il suffisait bien de changer l'image.

    Sinon la mon probleme c'est d'appliquer comme texture une sdl_surface qui n'est pas chargé avec IMG_Load(). Donc qui n'est pas vraiment une image.
    J'obitens un peu n'importe quoi comme texture a l'ecran. Je pense que j'ai un probleme avec le "type" de ma surface? Je cherche du cote des flags. Il faudrait que je puisse voir comment est créé la surface des images je pense.
    Je continue et mes recherches

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    probleme resolue:

    il fallait utilise gl_rgba au lieu de gl_rgb pour charger la surface.

    glTexImage2D( GL_TEXTURE_2D, 0, 3, surface->w,
    surface->h, 0, GL_BGRA,
    GL_UNSIGNED_BYTE, surface->pixels );

    J'ai me bien quand il n'est pas necessaire de chercher pendant 3 jours pour regler un probleme tout bete

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    Je pense que je vais ne pas avoir le choix et vais devoir utiliser :
    GL_ARB_texture_non_power_of_two

    En effet mes surface n'ont pas toujours des cotés a la puissance de 2.

    Dans un premier temps j'avais fait des surfaces a la puissance de 2 et ne travaillé que sur la partie qui m'interesse.
    Mais a l'affichage j'ai alors 2 possiblités:
    - faire un plan de la taille de la partie qui m'interesse, mais la texture est alors retrecis pour entrer dedans en entier. Je n'ai pas trouve comment dire a opengl de ne pas redimensionner la surface.
    - faire un plan = a la surface (dont avec la puissance de 2) mais la j'ai alors une partie qui est noir et je n'ai pas réussi a la faire disparaitre. J'ai essayé de rendre le noir transparent dans la surface sdl mais ca ne fonctionne pas.
    J'ai réussi a rendre l'objet transparent, mais voila c'est tout l'objet.

    J'essaye donc d'utiliser GL_ARB_texture_non_power_of_two à moins que vous ayez une autre solution au probleme.

  13. #13
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Que cherches-tu à faire exactement ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    j'ai ecrit une bibliotheque en sdl permettant de creer des composants: pannel, edit, bouton ...

    http://unimangaff.no-ip.org/projet_sdl/screenshot/screen1.png
    http://unimangaff.no-ip.org/projet_sdl/screenshot/screen_2.png

    A present j'ai besoin de pouvoir l'afficher dans une fenetre opengl.
    Par exemple un pannel est une surface. Je voudrais donc afficher cette surface sur une fenetre opengl.

    Pour cela je cré un objet rectangle sur lequel j'applique la surface sdl. Mon code actuel fonctionne tant que la surface a des cote a la puissance de 2.

    Seulement c'est un peu trop restrictif alors j'aimerais pouvoir afficher une surface ayant n'importe quel taille.

  15. #15
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Je te conseille de développer ta bibliothèque pour et avec OpenGL dans ce cas
    dessiner tes fenêtres à partir de données vectorielles, pas des textures, ou du moins pas comme cela

    si tu veux un exemple, il y a une bibliothèque du nom de gooey (http://glgooey.sourceforge.net/) qui est plutot bien faite

    sinon, l'autre solution consiste à avoir une surface de dimensions en puissance de 2 de taille supérieure au panel à afficher et de mettre un masque alpha dans la texture pour faire disparaitre les contours
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    Je n'ai pas vraiment envie de tout refaire ^^

    Pour le masque alpha sur la texture j'ai essayé en mettant le noir comme transparent (couleur par defaut d'une surface sdl) et cela n'a pas fonctionné.

    Je vais de nouveau regardé cette solution.

    edit--
    J'ai du nouveau.
    En faite ma texture est bien chargé avec le bit de transparence. Mais au liue d'aovir de la transparence c'est un beau noir

    J'utilise:
    glEnable(GL_ALPHA_TEST); // aussi essaye glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

    Je met ces lignes dans init_opengl() que j'appelle en debut de programme. (apres avoir créé la fenetre)
    C'est assez byzarrre je trouve.

    source

  17. #17
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Toujours sur nehe, je pense que le tutorial 20 (masking) peut t'apporter les réponses à tes questions
    il y a aussi le tutorial 32 qui traite de l'Alpha Blending et de l'Alpha Testing et qui serait plus adapté à ce que tu cherches à faire

    si j'ai le temps ce soir après le boulot je regarderai ton code et les tuts pour te proposer une solution
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  18. #18
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->w, TextureImage[0]->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[0]->pixels );
    Je me demande si ton problème ne viendrait pas du 3ème paramètre, 3 composantes = RGB donc pas de place pour l'alpha, tu devrais essayer ou de le mettre à 4 ou de mettre GL_RGBA
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 55
    Par défaut
    c'était bien ca.

    Je dois dire que j'avais deja essaye ca et ca n'avait pas fonctionné, il devait manquer une ligne que j'ai rajouté entre temps ...

    J'ai vraiment l'air bête parfois

    edit ---
    Bon ben j'ai encore besoin d'aide ...

    Mon code gere bien la transparence provenant directement du format de l'image.

    Mais il ne gere pas 2 chose:
    - la couleur spécifié transparente dans la surface sdl.
    - le degres de transparence generale de la surface.

    J'en ai déduis tout simplement que le chargement d'une surface sdl ne gere pas les 2 points ci-dessus mais ne gere que la transparence associé à un pixel en particulier.

    Je me demandais si c'était bien ca?

    Si c'est le cas il faudrait que je puisse régler ces 2 points.
    Mais je ne trouve pas comment définir a un objet que tel couleur doit etre transparent.
    Ni comment mettre un degres de transparence a un objet. J'ai juste trouvé comment associé de la transparence et une couleur avec glColor4f().
    Avec une couleur blanche la transparence semble correcte.


    Sinon pour en revenir a ce que tu disais: faire la bibliotheque directement en full opengl.
    J'y ai un peu réfléchit et je ne pense pas que ce soit vraiment mieux. Les themes des pannels, boutons ... sont des images: 8 images (4 coins, bas, haut, gauche, droite, centre) donc au final je ne peut pas vraiment me passer des textures.

  20. #20
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 547
    Par défaut
    En fait il s'agit d'associer une transparence à un pixel par le biais de la couche alpha et donc dans les informations de pixels de la surface SDL
    après c'est opengl qui s'occupe de la transparence, tu lui dis ce qu'il doit faire avec
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    et tu actives/désactives la transparence avec un glEnable ou un glDisable(GL_BLEND);

    sinon, concernant la bibliothèque en full opengl, je ne parlais pas de te passer de textures, mais de résoudre ton problème de texture de dimension différente d'une puissance de 2

    à propos des textures justement, poses toi une question, fenêtre redimensionable qui fait 100x100, elle tient dans une texture 128x128, tu agrandis la fenêtre au dela de 128 sur une des 2 dimensions, tu réaloues une nouvelle surface, tu copies ta texture, tu fais pleins de changements de ce genre ?
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Opengl / SDL : Modifier une texture pixel par pixel
    Par tenseiken dans le forum Langage
    Réponses: 0
    Dernier message: 27/03/2009, 13h58
  2. [Delphi : OpenGL / SDL] Problème de textures
    Par Carrick dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2009, 13h44
  3. [DevIL] Aide DevIL pour chargement texture Opengl
    Par CPPTryer dans le forum DevIL
    Réponses: 1
    Dernier message: 10/02/2006, 16h47
  4. application de texture opengl
    Par batman60 dans le forum OpenGL
    Réponses: 2
    Dernier message: 14/06/2005, 17h08
  5. [ActiveX] Texturing OpenGL
    Par MaGaX dans le forum OpenGL
    Réponses: 10
    Dernier message: 17/03/2005, 18h06

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