2011-03-01 2 views
0

J'ai fait une application similaire à celle-ci: http://www.youtube.com/watch?v=U2uH-jrsSxs (le son est un peu fort et mauvais). Le problème est qu'il y a une très fine ligne/points/tout ce qui apparaît au bas de chaque texture. C'est presque imperceptible mais c'est là et je n'ai aucune idée pourquoi. Ma taille de texture est 256x256. J'ai testé earliear avec une texture de 128x128 Je pense qu'il n'y avait rien là mais pas sûr. Ce n'est pas un gros problème car il est très mince mais je trouve ça agaçant. Voici un screenshot. J'ai choisi avec RED ces lignes. Je suis un noob chez OpenGL (ES) alors j'ai probablement fait quelque chose de mal. Toute aide est appréciée.Étrange mince ligne ou des points au fond de ma texture opengl

Répondre

5

Cela sera dû à OpenGL pavage de la texture pour remplir la zone spécifiée. Donc, la ligne mince que vous voyez sera le sommet de cette texture qui commence à se répéter.

Pour l'éviter, dites la texture à CLAMP, plutôt que REPEAT (répéter en même temps que le pavage). Textures répéter par défaut, donc vous voulez une ligne comme celle-ci:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); 

Si vous êtes de cette façon inclinée, il y a aussi un non-code impliqué façon bodge autour. Il suffit de modifier vos graphiques source afin qu'aucun pixel ne soit présent dans les bords supérieur ou gauche. Déplacez donc le tout vers le bas d'un pixel et à droite d'un pixel dans sa toile. Mais alors, bien sûr, vous devrez ajuster vos coordonnées si vous voulez que les images apparaissent exactement au même endroit.

+0

Ah, oui c'était le problème! BTW 'GL_CLAMP' n'a pas été reconnu mais' GL_CLAMP_TO_EDGE' était correct. Je suppose que c'est parce que c'est openglES. Je ne pensais pas avoir besoin de spécifier le paramètre de texture/répétition de la texture si je ne répétais pas du tout mes textures. Merci. –

+0

Cool! Merci pour les commentaires, gyozo. – Dave

+0

Merci, ça marche –