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 :

OpenGL ES 2.0, afficher interface 2d sur 3d


Sujet :

OpenGL

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut OpenGL ES 2.0, afficher interface 2d sur 3d
    Salut.

    J'essaye de construire une interface 2d par dessus une vue 3d, mais je n'arrive pas à afficher mes sprites 2d.

    Plutot que lancer de grandes explication, je vais vous mettre un code minimal de mes enchainements OpenGL à chaque Frame. J'aimerais que vous me disiez l'enchainement parait correct. Si ça ne viens pas de cet enchainement, alors ça viens d'ailleurs dans mon code. :p

    Il doit bien y avoir 1 ou 2 truc manquant qui m'empêche d'afficher mes sprite 2d.

    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
     
    // Je clear ma frame
    			glViewport(0, 0, viewportSize.width, viewportSize.height);
    			glClearColor(0.f, 0.f, 1.f, 1.f);
    			glClear(GL_COLOR_BUFFER_BIT);
    			glClear(GL_DEPTH_BUFFER_BIT);
     
    // Je commence le rendu 3d
    // J'active le test de profondeur
    glEnable(GL_DEPTH_TEST);
     
    // Je draw ma scene 3d
     
    // Je désactive le test de profondeur
    glDisable(GL_DEPTH_TEST);
     
    // Je reset ma matrice de projection + view
    // Sous openGL ES 2.0, il n'y a pas de glProjection ou autre, les matrice sont passée manuellement au shader
    // Donc j'utilise un système fait main qui reproduit le fonctionnement
    Projection::identity(); // Reset la matrice
    Matrix4 view2d; // matrice qui transform la position des objets de coordonnée [0, longueur/largeur] vers des coordonnée [-1; 1]
    Projection::pushMatrix(view2d);
     
    // J'active le blending
    glEnable(GL_BLEND);
    // Je choisi un blending alpha
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
     
    // Pour chaque sprite
    // J'applique la matrice du sprite
    Projection::pushMatrix(transform);
    // Je bind le shader et la texture, déclare un tableau de vertex, active les bon attributes et fais draw le sprite.
    Projection::popMatrix();
     
    // Je disable le blendMode
    glDisable(GL_BLEND);
     
    // Et je swap les buffer pour afficher la scene
    eglSwapBuffers(...);
    Je ne fais qu'un seul clear du color buffer et depht buffer, il y a peut-être besoin de le faire une nouvelle fois avant de draw la scene 2d? Y a-t-il d'autre fonctions pour gérer le blend?

    N'importe quelle remarque peut m'aider, même un exemple sous OpenGL 1

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 222
    Billets dans le blog
    165
    Par défaut
    Bonjour,

    Je ne vois pas la ligne pour afficher le sprite
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Par défaut
    Salut !

    Concernant ton enchaînement de commandes GL, lorsque tu commences ton rendus 2D tu désactive le test sur le Z-Buffer mais tu oublis "peut-être" de désactiver l’écriture glDepthMask(false); bon y a peu de chance que cela résout ton problème .

    Tu n’es pas obligé d’appeler plusieurs fois glClear l’énumération des buffers dans GL sont des puissances de 2, donc elles se combinent par un simple ou logique :
    Code OpenGL : Sélectionner tout - Visualiser dans une fenêtre à part
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT)

    Sinon d’un point de vue conception, pourquoi utiliser une matrice projection pour le rendu 2D ? Puisque que tu la force à l’identité elle sert donc a rien ! et le changement de repère peut être fixer, directement dans ton propre pipeline de rendu 2D !
    Par exemple pour travailler dans un repère pixel :
    Code GLSL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    attribute vec2 vertex;
    uniform vec2 viewsize; // resolution du frame buffer en pixel
     
    void main(void)
    {
    	gl_Position.xy = ((vertex + 1.0)/2.0) * viewsize;
    }
    Ici je dois indiquer à mon pipeline 2D la résolution de la zone de rendus par l’uniform viewsize, mais pas besoin de lui indiquer à chaque boucle de rendus

    Y a-t-il d'autre fonctions pour gérer le blend?
    Pas d’autre fonction mais peut être par une méthode différente : rendre ta scene 3D dans une texture puis mixer toi-même tes couleurs dans un pixel shader !

    même un exemple sous OpenGL 1
    Rien ne peut t’aider en OpenGL ES 1.0, ce sont des techniques vielles de 10 ans basé sur le pipeline fixe, c’est totalement dépassé … de plus cela ne permet pas de benificier de l’accélération materiel.
    Pourtant le pipeline fixe a toujours la cote sur ce forum, c’est un mystère pour moi ... qui a vécu l’arrivé du pipeline programmable comme une véritable libération ….

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Bonjour,

    Je ne vois pas la ligne pour afficher le sprite
    J'ai résumé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    // Je bind le shader et la texture, déclare un tableau de vertex, active les bon attributes et fais draw le sprite.
    J'ai voulu simplifier car j'ai vérifier, revérifié et trivérifié que c'est ligne ne sont pas fautives.
    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
     
    GLfloat vertices[20];
    const Dimension2i & textureSize = m_texture->getSize(); // Dimension de l'image, 800 x 600 durant le test
     
    	vertices[0] = 0.f;						vertices[1] = (float)textureSize.height; vertices[2] = 0.f; vertices[3] = 0.f; vertices[4] = 0.f;
    	vertices[5] = 0.f;						vertices[6] = 0.f;						 vertices[7] = 0.f; vertices[8] = 0.f; vertices[9] = 1.f;
    	vertices[10] = (float)textureSize.width;vertices[11] = (float)textureSize.height;vertices[12] = 0.f;vertices[13] = 1.f;vertices[14] = 0.f;
    	vertices[15] = (float)textureSize.width;vertices[16] = 0.f;						 vertices[17] = 0.f;vertices[18] = 1.f;vertices[19] = 1.f;
     
    // Dans mon objet Shader. m_program est le code du programme compilé
    	GLint currentProgram;
    	glGetIntegerv(GL_CURRENT_PROGRAM, &currentProgram);
    	if(currentProgram != m_program)
    	{
    		glUseProgram(m_program);
    	}
     
    // Je bind la texture
    GLint location = glGetUniformLocation(m_program, "uTexture");
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, m_textureId);
    glUniform1i(location, 0);
     
    // Je set une couleur globale
    GLint location = glGetUniformLocation(m_program, "uColor");
    glUniform4f(location, 1.f, 0.f, 0.f, 1.f);
     
    // Je set la matrice
    GLint location = glGetUniformLocation(m_program, "uModelView");
    glUniformMatrix4fv(location, 1, false, m.pointer()) // m est une matrice 4x4, pointer() retourne un float[16]
     
    // J'active les vertex attrib
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 5, vertices);
    glEnableVertexAttribArray(0);
     
    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 5, vertices + 3);
    glEnableVertexAttribArray(1);
     
    // Et je draw le tout
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    @Pegase

    En effet je pourrais faire sans matrice avec ton shader, mais je veux pouvoir tourner et redimensionner mes sprites facilement, d'où l'utilisation de matrice.

    J'ai basé mes matrices de projection sur celles de la SFML, mais j'ai aussi essayé de draw le sprite sans aucune projection, en position 0.0. Théoriquement, j'aurai du avoir un quart de l'écran de la couleur de mon sprite, mais je n'ai même pas eu ce résultat...

    J'ai déjà essayé de désactiver le depth mask, et je n'ai pas activé le stencil buffer. :s Je vais tester a nouveau dans ce sens.

    Pour le stencil buffer, est-ce que ça peut avoir un impact sur le dessin 2d? J'ai lus que ça n’influençais que si on voulais avoir un effet de réflection. :/

    D'ailleur, si je touche au glDepthMask, je perd mon affichage 3d, même si je réactive avant de faire le rendu (glDepthMask(GL_TRUE))...

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 222
    Billets dans le blog
    165
    Par défaut
    Je vous conseille gDEBugger pour vérifier le rendu.

    Sinon, j'ai pensé, ne serait-ce pas car le quads est à l'envers. On peut vérifier avec : glCullFace(GL_BACK);/glCullFace(GL_FRONT);
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Citation Envoyé par LittleWhite Voir le message
    Je vous conseille gDEBugger pour vérifier le rendu.

    Sinon, j'ai pensé, ne serait-ce pas car le quads est à l'envers. On peut vérifier avec : glCullFace(GL_BACK);/glCullFace(GL_FRONT);
    J'ai vérifié le culling au cas où, mais non. Le culling est désactivé en rendu 2d, mais même activé ça ne viens pas de ça. :p ( Ha oui je n'ai pas mis le call au culling sur le code minimal...)

    Je vais essayer gDebugger.

    Edit : gDebugger, c'est juste génial cet outil, mais vu que je connais pas assez bien OpenGL, je sais pas où regarder pour trouver la faute. :/ La succession de call openGL parais correct, mais il y a trop de variable pour que je puisse repérer laquelle ne va pas...

  8. #8
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Pour dessiner un élément 3d comme un sprite 2d, j'utilise glDrawArrays. Pour le drawArray 3d, je passe par un VBO, mais pour le sprite, je passe par un buffer en RAM.

    Du coup, quand je set mes attribute, je donne comme dernier parametre de glVertexAttribPointer l'offset de l'attribute pour le VBO, et l'adresse du buffer + l'offset pour le sprite.

    Y a-t-il quelque chose à faire d'autre pour que gl comprenne que je veux faire un rendu depuis un buffer en RAM au lieu d'un VBO?

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    J'ai beau relire l'enchainement de mes fonctions openGL, je vois rien...

    Je reporte ici ce que me donne gDEBugger pour les function call

    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
     
    glClearColor(0,0,0,1)  // Clear color noir
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
     
    // On commence la 3d
    glEnable(GL_DEPTH_TEST)
    glEnable(GL_CULL_FACE)
    glCullFace(GL_FRONT)
     
    // On bind le shader
    glGetIntegerv(GL_CURRENT_PROGRAM, 0x0022EDD4)
    glUseProgram(6)
     
    // On bind la texture
    glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, 0x0022EDC8)
    glGetUniformLocation(6, uTexture)
    glActiveTexture(GL_TEXTURE0)
    glBindTexture(GL_TEXTURE_2D, 2)
    glUniform1i(2, 0)
     
    // On set la matrice pour le shader
    glGetUniformLocation(6, uModelView)
    glUniformMatrix4fv(1, 1, FALSE, {-0.24226843, -0.85334766, 0.50477111, 0.4997234}
    {-0.19957609, 0.71113509, 0.67250913, 0.66578406}
    {-0.59161288, 0.10955412, -0.43357214, -0.42923644}
    {14.202753, 17.656857, 35.61842, 45.262238})
     
    // On set l'uniform uColor pour avoir du blanc
    glGetUniformLocation(6, uColor)
    glUniform4f(0, 1, 1, 1, 1)
     
    // On set le VBO
    glBindBuffer(GL_ARRAY_BUFFER, 1)
    glVertexAttribPointer(0, 3, GL_FLOAT, FALSE, 32, 0x00000000)
    glEnableVertexAttribArray(0)
    glVertexAttribPointer(1, 3, GL_FLOAT, FALSE, 32, 0x0000000C)
    glEnableVertexAttribArray(1)
    glVertexAttribPointer(2, 2, GL_FLOAT, FALSE, 32, 0x00000018)
    glEnableVertexAttribArray(2)
     
    // On draw le mesh 3d, une belle TeaPot pleine de vertices
    glDrawArrays(GL_TRIANGLES, 0, 4680)
     
    // Ici, tout va bien, j'ai bien la TeaPot qui apparait sur fond noir.
     
    // On passe à la 2d
    glDisable(GL_DEPTH_TEST)
    glDisable(GL_CULL_FACE)
    glEnable(GL_BLEND)
     
    // On active le shader
    glGetIntegerv(GL_CURRENT_PROGRAM, 0x006DF3D0)
    glUseProgram(9)
     
    // bind la texture
    glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, 0x006DF3C4)
    glGetUniformLocation(9, uTexture)
    glActiveTexture(GL_TEXTURE0)
    glBindTexture(GL_TEXTURE_2D, 2)
    glUniform1i(1, 0)
     
    // Set la couleur uColor
    glGetUniformLocation(9, uColor)
    glUniform4f(0, 1, 1, 1, 1)
     
    // Set les vertice attributes.
    // J'ai modifié mon tableau de vertice pour qu'il prenne tout l'écran par défaut :
    //	static const GLfloat vertices[] = {
    //		-1.f, 1.f, 0.f, 0.f, 0.f,
    //		-1.f, -1.f, 0.f, 0.f, 1.f,
    //		1.f, 1.f, 0.f, 1.f, 0.f,
    //		1.f, -1.f, 0.f, 1.f, 1.f
    //	};
     
    glVertexAttribPointer(0, 3, GL_FLOAT, FALSE, 20, 0x004FEE38) // Le vertex attrib 0 correspond à la position
    glEnableVertexAttribArray(0) 
    glDisableVertexAttribArray(1) // Le vertex attrib 1 correspond aux normals, inutilisé pour les sprite
    glVertexAttribPointer(2, 2, GL_FLOAT, FALSE, 20, 0x004FEE44)// Le vertex attrib 2 correspond a la texcoord 0
    glEnableVertexAttribArray(2)
     
    // On draw le tout
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)
     
    // On desactive le blend
    glDisable(GL_BLEND)
     
    // Et swap buffer
    wglSwapBuffers(0xFF012527)
    // Oui, ici j'utilise wglSwapBuffer car mon programme tourne à la fois sous windows avec openGL 4.1 et sur un device android avec openGL ES 2.0.
    // A chaque test fais sous windows, je fais le test sous le device.

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Pour les vertex attribute, j'utilise un mapping fixe des attribute.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    glBindAttribLocation(m_program, 0, "a_position")
    glBindAttribLocation(m_program, 1, "a_normal")
    glBindAttribLocation(m_program, 2, "a_texcoord0")
    glBindAttribLocation(m_program, 3, "a_texcoord1")
    glBindAttribLocation(m_program, 4, "a_color")
    glBindAttribLocation(m_program, 5, "a_lightmap")
    J'ai essayé d'ajouter les normal dans le sprite, pour avoir les même attributes que pour le rendu 3D, et ça m'a fais disparaitre mes mesh, plus rien ne s'affiche... Donc le problème viendrais de mes vertex attributes. :/

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Par défaut
    Citation Envoyé par Spidyy Voir le message
    Y a-t-il quelque chose à faire d'autre pour que gl comprenne que je veux faire un rendu depuis un buffer en RAM au lieu d'un VBO?
    C’est plutôt à toi, développeur, a t‘adapter au mode de fonctionnement d’une carte graphique !

    Le GPU travaille avec sa propre mémoire : la VRAM ! la carte graphique ne peut donc pas accéder à la RAM … que ce soit en 1,2,3 … ou nD cela ne change rien ! la carte graphique n’a pas à savoir sur quel type de données (coordonnées cartésiennes, polaires ou sphériques) elle travaille, mais ces données doivent être obligatoirement en VRAM.

    Donc utilise un VBO, si c’est comme cela que le nomme un buffer en VRAM que l’on map aux attibuts d’un pipeline graphique

  12. #12
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Gné? Il y a 2 moyen de donner les donnée des vertex à openGL :

    Soit lui injecter les donnée à chaque draw, ce qui prend du temps, ce que j'ai appelé "par la RAM", et on le fais en donnant l'adresse d'un tableau de float à glVertexAttribPointer et openGL copie ce tableau dans sa VRAM

    Soit créer un VBO (Vertex Buffer Object) pour injecter les données du vertex 1 seule fois dans la VRAM, puis indiquer à openGL d'utiliser ce VBO pour faire son prochain draw.

    Je suis d'accord que tout se passe en VRAM pour openGL, mais j'utilise la deuxième méthode pour les objets 3d, et la première pour mes objets 2d (pour l'instant)

    Ou alors tu me dis qu'une fois qu'on a choisis d'utiliser l'une ou l'autre méthode, il faut s'y tenir jusqu'au bout?

  13. #13
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Juin 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Juin 2006
    Messages : 122
    Par défaut
    Trouvé. J'ai relu ma réponse à ton commentaire, et ça m'a fais demander : doit-on unbind un VBO si je veux passer directement un tableau de vertices? Et comment unbind?

    Recherche sur le net :
    glBindBuffer(GL_VERTEX_ARRAY, 0);

    J'ai essayé, et ça marche.

    Donc avant tout appel à un glDrawArrays après avoir passé un tableau de vertice, il faut unbind tout éventuel VBO déjà présent.

    Oh joie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher des courbes sur un seul "axes" d'une interface utilisateur
    Par Angel30 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 07/06/2009, 00h49
  2. Afficher des donnée sur l'interface GUI
    Par norberg dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 29/05/2009, 14h58
  3. Afficher du texte sur l'interface
    Par tayri dans le forum SDL
    Réponses: 4
    Dernier message: 15/05/2008, 18h11
  4. OpenGL - Afficher une image sur un quad
    Par Akwel91 dans le forum OpenGL
    Réponses: 16
    Dernier message: 16/01/2007, 12h04
  5. Réponses: 2
    Dernier message: 26/01/2006, 15h11

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