2010-07-21 4 views
1

Je travaillais sur un moteur 3D multiplateforme mais j'ai une version fonctionnant nativement sur OSX et iPhone/iPad (qui dans Simulator utilise la bibliothèque GL du système). Le problème que j'éprouve est que chaque texture est légèrement décalée dans les deux directions (ressemble à environ un décalage texel) et je regarderais plus dans mon code si je ne voyais pas le même problème dans Blender3D - après avoir généré quelques lightmaps il est devenu plus visible sur les dégradés de couleurs. Les fichiers de texture sont corrects et les mêmes coords de texture (ce qui couvre tout le quad).Problème de texturation OpenGL

Voici un exemple de la façon dont il ressemble dans un mélangeur (tex coords pour 2-triangles sont pour les angles dans la plage (0,0, 0,0) - (1,0, 1,0)): http://i28.tinypic.com/2yllfr5.png

Vous pouvez y voir à droite et les bords supérieurs du quad marqués qui sont remplis de texels erronés.

Une idée pour contourner le problème? J'utilise OSX 10.6, mis à jour à la dernière version.

Répondre

4

Problème résolu. Pour ceux qui trouveront des artefacts après avoir texturé la géométrie sur les bords d'une texture, la réponse peut être utile. Il y a deux raisons pour lesquelles cela se passe:

  • GL_TEXTURE_WRAP_S et GL_TEXTURE_WRAP_R sont réglés par défaut à GL_REPEAT
  • si vous définissez GL_CLAMP sur tex param il se mélange avec une bordure extérieure zone de texture sur les bords de quad (qui est noir par défaut).

solution est simple, pour GL_TEXTURE_WRAP_S et GL_TEXTURE_WRAP_T vous devez utiliser GL_CLAMP_TO_EDGE qui enserre coords texture à 0,0 + 0,5 et 1,0 à 0,5 soit une marge de 0,5 texel de chaque côté de la texture.

J'espère que cela aidera d'autres personnes qui trouveront un problème similaire.