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 + Menu


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    Le ptit schéma qui va bien...

    Voici le masque en 256*256:
    ___________________
    |000000000000000000|
    |000000000000000000|
    |000000000000000000|
    |000000000000000000|<-- BLANC
    |000000000000000000|
    |_________________ |
    |111111111111111111| <-- NOIR
    |_________________ |

    Lorque j'execute ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	glBlendFunc(GL_DST_COLOR,GL_ZERO);							// Blend Screen Color With Zero (Black)
    	glBindTexture(GL_TEXTURE_2D, menu[1]);						// Select The Second Mask Texture
    	glBegin(GL_QUADS);											// Start Drawing A Textured Quad
    		glTexCoord2f(1.0f, 0.0f); glVertex2i(256, 480);			// Bottom Right
    		glTexCoord2f(0.0f, 0.0f); glVertex2i(0, 480);			// Bottom Left
    		glTexCoord2f(0.0f, 1.0f); glVertex2i(0, 224);			// Top Left
    		glTexCoord2f(1.0f, 1.0f); glVertex2i(256, 224);			// Top Right
    	glEnd();
    J'ai simplement la bandelette noir du bas qui apparaît, le reste étant complètement transaprent, bingo...

    Je veus donc y appliquer ma texture afin que seule la partie du dessous soit affichée, seulement, la partie du dessus est affichée avec de la transparence alors que je ne veus rien voir du tout... (j'ai en testé plusieurs dont glBlendFunc(GL_SRC_ALPHA, GL_DST_ALPHA) qui me donnent ce résultat).

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    Ce fut non sans mal mais j'y suis parvenu, comme quoi, bien décomposer le problème permet plus facilement de parvenir à la solution...


  3. #3
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    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 577
    Par défaut
    Excellent, tu peux nous dire d'où venait le problème finalement et comment tu l'as résolu ?
    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 confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 95
    Par défaut
    Mais c'est tout à fait normal shenron666... voilà, ce que je veus faire :
    Une sorte de programme de visualisation de terrain 3D affublé d'une ihm à la 24H (je me suis fait les saisons 3 et 4 la semaine dernière 8) ).
    Il est loin d'être terminé mais ça commence à avoir de l'allure, grâce à vous, merci



    Le menu est composé de 6 textures : 2 * (256² + 256² + 128²) en dessus et en dessous, chaque texture est affichée comme ça :

    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
     
    	glBlendFunc(GL_DST_COLOR,GL_ZERO);							// Blend Screen Color With Zero (Black)
    	glBindTexture(GL_TEXTURE_2D, menu[0]);						// Select The Second Mask Texture
    	glBegin(GL_QUADS);											// Start Drawing A Textured Quad
    		glTexCoord2f(0.0f, 1.0f); glVertex2i(128, 128);			// Bottom Right
    		glTexCoord2f(1.0f, 1.0f); glVertex2i(0, 128);			// Bottom Left
    		glTexCoord2f(1.0f, 0.0f); glVertex2i(0, 0);				// Top Left
    		glTexCoord2f(0.0f, 0.0f); glVertex2i(128, 0);			// Top Right
    	glEnd();													// Done Drawing The Quad
     
    	glBlendFunc(GL_ONE, GL_ONE);								// Copy Image 2 Color To The Screen
    	glBindTexture(GL_TEXTURE_2D, menu[1]);						// Select The Second Image Texture
    	glBegin(GL_QUADS);											// Start Drawing A Textured Quad
    		glTexCoord2f(1.0f, 0.0f); glVertex2i(128, 128);			// Bottom Right
    		glTexCoord2f(0.0f, 0.0f); glVertex2i(0, 128);			// Bottom Left
    		glTexCoord2f(0.0f, 1.0f); glVertex2i(0, 0);				// Top Left
    		glTexCoord2f(1.0f, 1.0f); glVertex2i(128, 0);			// Top Right
    	glEnd();
    La 1ère texture est le masque qui n'est qu'une image noir et blanc dont le noir spécifie ce qui doit être affiché et la 2ème texture est composé d'une partie noire qui n'est pas affichée grâce à glBlendFunc(GL_ONE, GL_ONE) . Mes erreurs venaient surtout du fait que je suis un noob en opengl et que je ne comprenais pas forcément ce que je manipulais (le format des textures, les couleurs de masque, le plan ortho, etc...) , ce qui s'améliore petit à petit, encore une fois grâce à vous...

    Vous avez peut-être remarqué les traits horizontaux aux extrémités haut-gauche et bas-droite, je ne sais pas à quoi c'est dû, une idée ? Ca le fait sur toutes les extrémités haut et bas de mes textures lorsque j'agrandi la fenêtre, des petits traits...

    Ce que je voudrais c'est pouvoir me balader dans un petit monde en style vue avion... comme ça (on a bien le droit de rêver, non ?)

    Alors maintenant que vous savez tout, j'ai encore des chtites questions si ça vous tente de m'aider à terminer mon projet improvisé (M. Jack Bauer en personne vous le rendra: vous serez dispensé de scéance de torture pendant 24h, pas une seconde de plus , après vous cracherez la vérité même si c'est faux )

    1 - Comment optimiser au mieux la visualisation du terrain? là il est créé une fois dans une liste d'affichage et réactualisé si on augmente la définition du terrain (cf tuto de linuxgrafic.org ici), plus il y a de subdivisions (triangles), plusça rame alors qu'il n'y a que 256*256 points pour le terrain... Une technique de sioux pour moi ? Le dernier paramètre de gluPerspective et le fog n'y font rien, malheureusement, mon ordi se tape tous les triangles à dessiner au lieu de se charger seulement de ceux à l'écran uniquement...

    2 - Comment ils font pour des jeux où le monde s'étend sur des kilomètres sans chargement entre temps (je parle juste de terrain là...)

    3 - Est-il possible d'atteindre une visualisation très étendue comme le lien cité plus haut (mon objectif) ???

    4 - Comment implémenter de l'eau avec des effets sans trop de complexité ?

  5. #5
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    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 577
    Par défaut
    Je vais essayer de répondre à quelques unes de tes questions

    Pour tes traits horizontaux il s'agit d'un problème de texture, essayes de modifier tes coordonnées de texture ou lors de la création de tes textures de mettre le paramètre GL_CLAMP_TO_EDGE au lieu de GL_REPEAT avec la fonction glTexParameteri

    Pour ton Point n°1 : l'optimisation, renseignes toi sur les vertex buffers, c'est beaucoup plus rapide qu'une display list que tu utilises à mon avis
    renseignes toi aussi sur le frustum culling ou sur les octree, qui éliminent une grosse partie des polygones qui ne doivent pas être affichés (ceux qui sont derrière toi, hors champ de la caméra, cachés par une montagne...)
    regardes sur le site www.codesampler.com section OpenGL of course pour des exemples

    2- en fait ils effectuent un chargement en temps réel (streming) du terrain qui est "découpé en zones, genre ton terrain est consitué de pleins de petits terrains et tu n'utilises que les 9 plus proches, celui sur lequel tu te trouve et les 8 autour
    il y a plusieurs possibilités, c'est juste un exemple pas forcément le meilleur

    3- oui (voir plus bas pour des démos)

    4- il y a la méthode quake, par déformation de texture, la méthode gourmande, un sorte de height field dont tu modifies les points avec des sinusoides, les pixels shaders, bref plusieurs possibilités
    malheureusement je ne saurai trop t'orienter là dessus

    Pour terminer, vu le projet dans lequel tu le lance, je te conseille de visiter le site http://www.vterrain.org/
    j'espère que tout ce que tu y trouvera ne te découragera pas mais au contraire te motivera
    visites aussi http://web.interware.hu/bandi/ranger.html
    il y a des videos, des screenshots, une thèse et ... le code source d'un programme impressionnant

    PS: je suis très intéressé par ce genre de programme et j'aimerai bien arriver à faire quelque chose comme ce que tu projettes
    j'espère un jour obtenir un monde extérieur intérieur pour un moteur utilisable dans un projet de type RPG
    va faloir apprendre à maitriser les technique telles que le ROAM ou le SOAR, je te conseille de te renseigner dessus également

    Bon courage
    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 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/04/2015, 02h02
  2. Réponses: 4
    Dernier message: 16/11/2009, 22h39
  3. [SDL OPENGL] Menu 2d et jeu en 3d
    Par devtroll dans le forum SDL
    Réponses: 4
    Dernier message: 11/06/2007, 16h40
  4. Menu avec SDL+OpenGL
    Par f56bre dans le forum SDL
    Réponses: 2
    Dernier message: 04/11/2006, 11h40
  5. menu en opengl
    Par iguanaute dans le forum OpenGL
    Réponses: 7
    Dernier message: 05/03/2004, 01h38

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