Bonjour,
J'ai créé un ensemble de cube via VertexBuffer et les VertexArray pour les positions et les normales.
Je souhaiterais maintenant pouvoir changer la couleur des faces de tous les cubes, pour le faire je voulais utiliser un VertexArray pour les couleurs et setPositions.
Le problème lorsque je compile j'ai une erreur sur le setPositions:

java.lang.IllegalArgumentException:
at javax.microedition.m3g.VertexBuffer.setColors(VertexBuffer.java:130)


Voilà comment j'implémente les couleurs:

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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
        short[] vertexColors = {
            //Cube 1
              9, 120,  62,   // front
            55,  95,   0,   // back
              0, 105, 20,   // left
            15, 124,   0,   // right
            78,  26,  33,   // top
            0, 45, 107,   // bottom
 
            //Cube 2
              9, 120,  62,   // front
            55,  95,   0,   // back
              0, 105, 20,   // left
            15, 124,   0,   // right
            78,  26,  33,   // top
            0, 45, 107,   // bottom
 
            //Cube 3
              9, 120,  62,   // front
            55,  95,   0,   // back
              0, 105, 20,   // left
            15, 124,   0,   // right
            78,  26,  33,   // top
            0, 45, 107,   // bottom
 
            //Cube 4
              9, 120,  62,   // front
            55,  95,   0,   // back
              0, 105, 20,   // left
            15, 124,   0,   // right
            78,  26,  33,   // top
            0, 45, 107,   // bottom
            };
 
...
...
 
        VertexArray vaColors = new VertexArray(vertexColors.length / 3, 3, 2);
        vaColors.set(0, vertexColors.length /3, vertexColors);
 
...
...
 
        VertexBuffer vb = iVb = new VertexBuffer();
        vb.setPositions(vertArray, 1.0f, null);
        vb.setNormals(normArray);
        vb.setColors(vaColors);
Avez vous une idée ?
Merci