Salut,
j'explique rapidement
j'ai une surface composée de carré (dim = 200x200carre de 100 unites)
j'applique une texture sur chaque carré (la meme)
mais a la restitution, on remarque les carres.
y a t'il moyen d'eviter ca ?
Salut,
j'explique rapidement
j'ai une surface composée de carré (dim = 200x200carre de 100 unites)
j'applique une texture sur chaque carré (la meme)
mais a la restitution, on remarque les carres.
y a t'il moyen d'eviter ca ?
Tu peux être plus précis ? Un petit screenshot peut-être ?mais a la restitution, on remarque les carres
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Si j'ai bien compris les bords de ta texture sont visibles et du coup on a pas l'impression que les textures se suivent
un petit screenshot serait tout de même le bienvenu comme dit Loulou24
sinon pour ton problème, si j'ai bien compris, regardes du côté de glTexParameter
les paramètres intéressants sont GL_TEXTURE_WRAP_S et GL_TEXTURE_WRAP_T
il faudrait surement les associer à un GL_CLAMP_TO_EDGE
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.
pour le rendu, j'ai un souci, je ne sais pas comment inserer une image dans mon post
sinon, je pense que ca viens de ma fonction de dessin d'environnement
que j'utilise de cette facon
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 //Fonction de dessin d'une surface rectangulaire void dessinersurface(int longeur, int largeur, int hauteur, unsigned int texID) { int x,z = 0; const int pas = 100; largeur /= pas; longeur /= pas; glBindTexture(GL_TEXTURE_2D, texID); for (int i=0; i<largeur; i++) { for (int j=0; j<longeur; j++) { glBegin(GL_QUADS); glTexCoord2i(0.0f, 0.0f); glVertex3i(0.0f + x, hauteur, 0.0f + z); glTexCoord2i(0.0f, 1.0f); glVertex3i(0.0f + x, hauteur, pas + z); glTexCoord2i(1.0f, 1.0f); glVertex3i(pas + x, hauteur, pas + z); glTexCoord2i(1.0f, 0.0f); glVertex3i(pas + x, hauteur, 0.0f + z); glEnd(); x += pas; } x=0; z+=pas; } }
bon je sais c'est pas la meilleure facon, mais pour le moment mon objectif n'est pas la
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 glPushMatrix(); glTranslatef(-10000, 0, -10000); dessinersurface(20000, 20000, 0, Terraintexture.ID); //le terrain glTranslatef(9750, 0, 10000); dessinersurface(500, 3000, 0, Tarmactexture.ID); //la piste glPopMatrix();
de plus je me suis apercu qu'avec un pas de 500, ca allait bcp mieux sauf pour la piste
j'ai controler mes images, et elles sont bien uniformes.
je vais essayer de me pencher sur les parametres que tu as donné
Tu uploades ton image sur un site de ce genre si tu n'as pas d'espace perso, et tu utilises la balise [ img ] pour l'insérer dans ton post.pour le rendu, j'ai un souci, je ne sais pas comment inserer une image dans mon post
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
une question supplementaire.
Que vaut-il mieux faire, créer n carrés et leur appliquer a chacun la texture (comme je le fais actuellement) ou repeter plusieurs fois la texture (mais a ce moment la ca fait beaucoup de repet)?
Surtout, quelle solution est la plus performante (quand je vois le FPS ca me fait peur, meme si le reste de mon code n'est pas encore tout a fait optimisé)?
Ben... Si ta texture n'est pas prévue pour être repétée (ie. que son bord droit soit dans la continuité de son bord gauche), il est normal de voir une "cassure". Choppe plutôt une texture prévue à cet effet, il en existe plein sur le net.ci le pas est a 100, et on discerne les jonctions de textures (enfin c'est mon avis) et je me demande si c'est normal ?
Entre afficher 2 triangles et 1000, le choix est rapide. Si tu as une seule texture repétée sur un terrain plat, fais un seul quad avec des coordonnées de textures élevées afin de répeter la texture. That's all.Que vaut-il mieux faire, créer n carrés et leur appliquer a chacun la texture (comme je le fais actuellement) ou repeter plusieurs fois la texture (mais a ce moment la ca fait beaucoup de repet)?
Surtout, quelle solution est la plus performante (quand je vois le FPS ca me fait peur, meme si le reste de mon code n'est pas encore tout a fait optimisé)?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
voila j'ai apporté quelques modifs
je dessine un seul polygone et je repete la texture (50x c'est pas trop ?, mais sinon c'est pas terrible au rendu).
dans un premier temp j'ai utilisé glTexImage2D() et le mode GL_LINEAR
puis je suis passé à glBuild2DMipmap() mais j'ai vu aucune difference.
en modifiant GL_LINEAR par GL_LINEAR_MIPMAP_LINEAR pour le filtre GL_TEXTURE_MIN_FILTER comme indiqué dans certain tuto, bin je vois une difference mais c'est franchement moins bien :o
bon bref je reste en GL_LINEAR, et pis c'est tout
allez derniere question et pis c'est fini avec mes textures
si on utilise glBuild2DMipmap(), on n'a plus besoin de glTexImage2D()
du moins c'est ce que j'ai compris.
Pourtant dans la plupart des codes que j'ai pu voir, les deux sont presents ?
glBuild2DMipmap fait en fait un glTexImage2D sur tous les niveaux de mipmap de ta texture, donc non tu n'as pas besoin des deux. Tu peux donner un exemple de code où tu as vu les deux ?
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
en vitesse ici
mais c'est assez frequent dans les codes traitant de textures et meme certains tut (la preuve)
Ben je pense pas que ça serve à grand chose, mais peut-être que je me trompe (mes connaissances en OpenGL sont toutes fraîches).
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
donc avis au specialiste
En même temps, la documentation de gluBuild2DMipmaps est assez claire sur le sujet.
Je ne vois vraiment pas pourquoi il faudrait repasser un coup de glTexImage2D sur l'un des niveaux.[...]
glTexImage2D is called to load each of these mipmap levels. Level 0 is a copy of data.
[...]
Mieux que SDL : découvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
tout a fait d'accord, mais maintenant j'ai un autre probleme et avec le test de profondeur cette fois
si je l'active, l'affichage de la piste est completement foiré.
j'ai l'impression qu'il ne sait pas qui est devant et qui est derrière.
j'ai donc monté la hauteur de la piste legèrement et tjours pareil.
ca ne revient à la normale que si la piste est au minimum à 50 au dessus du terrain.
j'ai vu quelque part que le plan near de la perspective ne devait pas etre a zero, mais bon ca n'a rien changé.
je peut bien m'en passer, mais s'il est la c'est qu'il doit marché le GL_DEPTH_TEST, non?
de mon avis dans les exemples du site que tu as donné, le gars ne s'est pas bien documenté car glTexImage2D est inutile après un glBuild2DMipmap
j'ai vu d'autres choses discutables dans ce qui est écrit tel que
pour éviter toute erreur ?Nous chargeons la matrice de projection et nous la vidons pour éviter toute erreur avec glLoadIdentity().
et il y en a d'autres des comme ça
même si le code est "bon" (dans le sens où ça fonctionne), on va dire qu'il est pas optimisé et surtout mal documenté
bref, je ne voit pas ce site comme une référence lol
c'est un problème de précision du zbuffer, tu peux essayer d'augmenter la précision mais ce n'est pas la meilleure solutionEnvoyé par grand's
regarde du côté de "glPolygonOffset" qui permet de résoudre ce genre de problème
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.
probleme de z fighting : il faut mettre le near clip plane a la valeure 1 MINIMUM et adapter la longeur du cone de vision, un far clip plane à 10000 alors qu'on voit max a 500 est completement inutile car les valeure Z des fragment sera comprise entre 1 et 10000 alors qu'ils ne vont qu'a 500. malheureusement, contre les Z fighting il n'existe pas de solution miracle, le seul moyen est de limiter la distance de vision, et quand les objets sont loins, n'afficher qu'une version "low poly" pour limiter les effets de figthing desagreables...
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
ok j'ai reglé le pb
d'abord, modif de mes parametres de carte graphique
-profondeur de z-buffer imposé à 24bits
-triple buffering activé
sais pas si c'etait utile, mais ca a amélioré le rendu (mais pas entierement)
+
modif du code en utilisant glPolygonOffset()
là j'ai pas vraiment compris, mais ca fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 glEnable(GL_POLYGON_OFFSET_FILL); glPolygonOffset(2.0, 1.0); dessinerRectangle(20000, 20000, 0, textTabName[1], 50); glDisable(GL_POLYGON_OFFSET_FILL); glTranslatef(9750, 0, 10000); dessinerRectangle(500, 3000, 0, textTabName[0], 10); glPopMatrix();
pour repondre à bafman, j'ai effectivement mis à 1 (et plus à 0) mon near clip plane
seulement pour le far, je suis obligé d'avoir une grande valeur (actuellement 15000), sinon du haut de mon avion, je ne vois rien.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager