AccueilAccueil  RechercherRechercher  S'enregistrerS'enregistrer  Connexion  

 

 [OpenGL] "Ligne" sur l'affichage

Aller en bas 
AuteurMessage
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

[OpenGL] "Ligne" sur l'affichage Empty
MessageSujet: [OpenGL] "Ligne" sur l'affichage   [OpenGL] "Ligne" sur l'affichage EmptyJeu 11 Oct 2012 - 16:19

Bidour bneige

J'ai un soucis d'affichage avec opengl assez génant, des lignes apparaissent à l'écran :
http://data.imagup.com/12/1164630418.png
http://data.imagup.com/11/1164630444.png

(les images sont grande, je met en lien Very Happy)

Elles apparaissent sur le tileset, on dirait que les coordonnées UVs déconnent, et qu'elles débordent (le tileset est en une seule image), les paramètres pour générer une texture sont les suivant :

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);

Le problème semble être réglé si ma caméra n'a pas de décimales, mais ça fonctionne pas avec les framebuffers.

Quelqu'un aurait eu le même problème ? Je peux peut être essayer d'utiliser un programme GLSL pour gérer à la main mes coordonnées UV mais j'ai peur que ça fasse un peu tout ramer..

Mercizavous !

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
-Coco-
Utilisateur confirmé: Rang ***
-Coco-

Messages : 545
Localisation : Grenoble - Montpellier
Projet Actuel : Orion VII - 0%

[OpenGL] "Ligne" sur l'affichage Empty
MessageSujet: Re: [OpenGL] "Ligne" sur l'affichage   [OpenGL] "Ligne" sur l'affichage EmptyDim 14 Oct 2012 - 10:25

Hm, si le problème se règle quand tu ne mets pas de décimales à la caméra, alors je pense que c'est un truc du genre :
Ta texture fait 128*128 pixels
OpenGL l'affiche, en calculant, sur un carré de 128*129 pixels.

Ensuite il fait des interpolations comme il peut pour combler les pixels en trop, et évidemment, il fait ça plutôt vers le milieu de la texture.

Bon, je suis pas un pro de OpelGL et je ne sais même pas comment me servir de glTexParameter, même si je pense que c'est censé faire du raccord de texture, c'est ce genre de problème à la con qui doit arriver...

Sinon je crois pas que le GLSL fasse tout ramer, si tu fais un programme GLSL ça va overrider les calculs de base OpenGL, et non pas faire un double calcul. (Là encore, je suis pas expert, mais je crois bien que c'est comme ça que ça se passe)

_________________
Oh, snap.
Revenir en haut Aller en bas
onilink_
Modérateur
onilink_

Messages : 9142
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

[OpenGL] "Ligne" sur l'affichage Empty
MessageSujet: Re: [OpenGL] "Ligne" sur l'affichage   [OpenGL] "Ligne" sur l'affichage EmptyDim 14 Oct 2012 - 10:42

GLSL c'est très rapide a condition d'avoir une carte graphique qui supporte les shaders, et de ne pas faire pour chaque pixel des calculs super lourds x)

Sinon pour le problème je ne connais pas la solution la, mais je serais toi je l'isolerais pour mieux le comprendre.
De plus si t'arrive a reproduire le problème dans un code qui tient juste dans le main on pourras plus t'aider Smile

_________________
[OpenGL] "Ligne" sur l'affichage Runningpotato1[OpenGL] "Ligne" sur l'affichage TvF6GED [OpenGL] "Ligne" sur l'affichage MdetltS
Revenir en haut Aller en bas
Termite
Utilisateur confirmé: Rang ****
Termite

Messages : 1005
Localisation : Dans ta charpente !
Projet Actuel : RayEngine 5.0

[OpenGL] "Ligne" sur l'affichage Empty
MessageSujet: Re: [OpenGL] "Ligne" sur l'affichage   [OpenGL] "Ligne" sur l'affichage EmptyDim 14 Oct 2012 - 13:12

Oui je sais que le GLSL est super rapide, mais je me demande si ça va pas être un peu lent si je lui envois à chaque fois les infos pour calculer les coordonnées UVs (left,right,top,bottom et la taille du tileset pour chaque tile dessiné)

Le soucis c'est que j'comprends pas vraiment le pourquoi de ce problème, on dirait que les coordonnées UVs débordent de temps en temps (selon la position du quad dessiné), du coups ça n’apparaît que sur le tileset vu que sur les sprites, chaques image est séparée de quelques pixels..

A la rigueur, je peux modifier les tilesets pour avoir des cases plus grande, mais avec une espèce de bordure, du coups le débordement gênerait pas trop ? (jviens d'y penser là à l'instant, en écrivant Very Happy)


edit : Ok, j'ai résolu le problème.Effectivement GL a des erreurs de Texcoords (probablement dû à la précision des floats/double) s'il y a un redimensionnement du viewport.
Pour palier ça, il faut ajouer une bordure sur le tileset, entre chaque tile.
La technique que j'ai utilisé :

J'ai un #define TILESET_BORDER v pour choisir la bordure que je veux entre chaque tile.
Ensuite, lorsque je charge mon image, j'en créé une nouvelle dans laquelle je colle chaque tiles de l'ancienne espacé par 2*TILESET_BORDER (ça me donne donc un petit vide entre chaque tile)

Ensuite, pour chacun des tiles, je duplique les bordures : ça fait des espèces de fondu autours des bords des tiles (je posterais une image si vous comprenez pas et que vous avez le même soucis Very Happy)
Je m'occupe de bien régler les coordonnées UVs, et tadam : Dès qu'il y a un débordement dans les coordonnés, ben ça va coller la ligne dupliquée, donc plus de soucis de débordement sur d'autre tiles.

Cool bneige

_________________
Because these are not the words of God, the same God that burnt the knowing.
Revenir en haut Aller en bas
Contenu sponsorisé




[OpenGL] "Ligne" sur l'affichage Empty
MessageSujet: Re: [OpenGL] "Ligne" sur l'affichage   [OpenGL] "Ligne" sur l'affichage Empty

Revenir en haut Aller en bas
 
[OpenGL] "Ligne" sur l'affichage
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: