J'ai trouvé un framework graphique 3D pour Android appelé Rajawali et j'apprends comment l'utiliser. J'ai suivi le tutoriel le plus basique qui rend un objet shpere avec une image jpg de taille 1024x512 pour la texture. Cela a bien fonctionné sur Galaxy Nexus, mais cela n'a pas fonctionné avec le Galaxy Player GB70.Texture OpenGL ES 2.0 ne s'affiche pas sur certains périphériques
Lorsque je dis que cela n'a pas fonctionné, je veux dire que l'objet apparaît mais la texture n'est pas rendue. Finalement, j'ai changé certains paramètres que j'utilise pour le framework Rajawali lors de la création de textures et je l'ai fait fonctionner. Voici ce que j'ai découvert.
La cause venait de l'endroit où le GL_TEXTURE_MIN_FILTER
était en cours de définition. Parmi les quatre valeurs suivantes
GLES20.GL_LINEAR_MIPMAP_LINEAR
GLES20.GL_NEAREST_MIPMAP_NEAREST
GLES20.GL_LINEAR
GLES20.GL_NEAREST
la texture est seulement rendu lorsque GL_TEXTURE_MIN_FILTER
n'est pas réglé à un filtre à l'aide mipmap. Donc, quand GL_TEXTURE_MIN_FILTER
est réglé sur les deux derniers, cela fonctionne.
Maintenant, voici ce que je ne comprends pas et je suis curieux. Lorsque je réduis l'image que j'utilise comme texture à la taille 512x512 les paramètres GL_TEXTURE_MIN_FILTER
n'a pas d'importance. Les quatre paramètres du filtre min fonctionnent. Donc, ma question est, y at-il une exigence pour les dimensions de l'image lors de l'utilisation de filtre min pour la texture? Est-ce que je suis obligé d'utiliser une image qui est carrée? Est-ce que d'autres choses comme le style d'habillage ou la configuration du filtre magnétique peuvent être un problème? Ou est-ce que cela ressemble à un bug de mise en œuvre OpenGL de l'appareil?
Merci de proposer une bonne source de matériel d'étude. Mais je suis au courant de la plupart des choses que vous avez mentionnées. Peut-être que je n'ai pas fait mon histoire très claire. –
J'utilise une image de taille 1024 * 512 pour une texture. La texture est bonne sur Galaxy Nexus mais elle n'est pas restituée sur Galaxy Player. La texture ne fonctionnera que sur Galaxy Player dans les deux conditions suivantes. Si vous n'utilisez pas de filtre mipmap pour GL_TEXTURE_MIN_FILTER (linéaire ou plus proche) ou si je redimensionne la taille à 512x512 (alors le paramètre GL_TEXTURE_MIN_FILTER n'a pas d'importance). Et puisque 1024 et 512 sont deux nombres qui sont la puissance de deux, je suppose que le mode de bouclage n'a pas vraiment d'importance. Au moins c'est ce que je pense d'après ce que je comprends. –
Comme ci-dessus j'avais aussi une texture qui avait 2 à la puissance de taille (1024 x 512) et il affichait une texture noire. Le changement dans le mode wrap a fonctionné pour moi. – paj7777