2012-05-28 5 views
1

Je développe un jeu 2D assez simple pour Android en utilisant OpenGL ES. Je veux qu'il fonctionne sur presque tous les appareils sur le marché. Le problème auquel je suis confronté est, quand je cartographie les textures que j'utilise. Si l'image que je souhaite mapper est de taille différente de celle de l'objet cible, la qualité de l'image est réduite (même lorsque la taille de l'image est plus grande que l'objet), elle est pixellisée. Je veux des images très nettes, et la seule façon de les recevoir est lorsque j'utilise des textures et des objets de mêmes dimensions. Mais dans ce cas, j'ai besoin de 4,5 textures représentant la même image avec des dimensions différentes, pour prendre en charge suffisamment de résolutions d'écran. J'utilise des images PNG et les méthodes GL suivantes:Pourquoi les images redimensionnées OpenGL-ES ont-elles l'air pixellisées?

glClear(GL10.GL_COLOR_BUFFER_BIT); 
glEnable(GL10.GL_TEXTURE_2D); 
glEnable(GL10.GL_BLEND); 
glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); 
//drawing happens here 
glDisable(GL10.GL_BLEND); 

Il n'y a pas de problème pour moi de créer tant d'images, mais la taille du jeu va grossir. Est-ce que je fais quelque chose de mal, ou juste OpenGL ne peut pas redimensionner des images comme Photoshop?

Répondre

4

Avez-vous essayé d'autres options d'échantillonnage, comme GL_NEAREST ou GL_LINEAR? (Voir glTexParameteri).

Je ne pense pas que ce soit la faute d'opengl, mais quand vous affichez des textures qui ne sont pas à leur résolution native (ou même un multiple pair), il y aura toujours une perte d'exactitude (parce que l'image doit être rééchantillonné à des limites non-pixel). GL_LINEAR peut alléger certains aspects de la pixellisation au détriment d'être légèrement flou, ce qui peut être ou ne pas être perceptible.

+0

merci, j'utilisais GL_NEAREST, maintenant je l'ai changé en GL_LINEAR et tout est parfait, merci beaucoup – mjekov

Questions connexes