Bonjour, je développe une petite api pour Android et je touche depuis peu à OpenGl.
Je voulais vous poser la question suivante qui commence un peu a me faire tourner fou.
Je vous présente le probleme dans son contexte, je pense pas besoin du code, il est facilement compréhensible.
Alors, j'ai ma classe cube qui contient LoadTexture()
cette methode instancie une classe qui contient un créateur de bitmap a partir de layout, et renvoie donc un bmp a LoadTexture.
, lorsque je créé x objet de cette classe Cube dans mon renderer, et que j'appelle pour chaque objet de cette classe
Cube cube1, cube2 cube3.... .LoadTexture(int resource de layout);
Je me retrouve avec plusieurs cubes partageant la même texture, même si j'ai chargé plusieurs textures différentes.
je sais que je dois utiliser glBindTexture avec les id donnés par glGenTextures
Mais je ne sais pas quand appeler ce glBind et pouvoir switcher de textures, en sachant que je définis les resources a utiliser dans le renderer.
C'est le même probleme en pire si je veux que chaque faces de mon Cube ait une texture différente mais je verrai ca plus tard.
Voilà, si quelqu'un pouvait m'aider a bien gérer ce probleme et pouvoir differencier les textures dans mon renderer pour chaque objet de la meme classe je lui en serait infiniment reconnaissant.
En précisant que je suis novice et j'ai pas fais école d'info alors je suis très content quand je bénéficie d'explications pédagogiques voire claires.
Merci beaucoup de votre attention chers développeurs
je quote quand meme un bout de mon code, ici mon loadTexture de (Cube)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void loadTexture(GL10 gl, Context context, int resource[]) { for (int i=0; i<resource.length; i++ ){ // ca c'est ma classe qui me créé des bmp avec des layout CreateBitmapFromLayout createBitmapFromLayout=new CreateBitmapFromLayout(context); Bitmap bmp1=createBitmapFromLayout.findMonLayout2(context, resource[i]); gl.glGenTextures(1, texture, i); // gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[i]); ???? GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp1, 0); gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); bmp1.recycle(); } }
Partager