Salut tout le monde,
Je reste coincé depuis qq tps sur la texture d'un cube.
En effet l'image affiché est dégradé, affichage de petit carré coloré rouge, vert, bleu. Je ne sais pas faire de capture d'écran sur mac.
Pour cela j'utilise la methode :
Je pense que le soucis viens d'un parametrage dans le code ci dessus.Code:
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 private void makeRGBTexture(GL gl, GLU glu, BufferedImage img, int target, boolean mipmapped) { ByteBuffer dest = null; switch (img.getType()) { case BufferedImage.TYPE_3BYTE_BGR: case BufferedImage.TYPE_CUSTOM: { logger.debug("Custom"); byte[] data = ((DataBufferByte) img.getRaster().getDataBuffer()).getData(); dest = ByteBuffer.allocateDirect(99999); dest.order(ByteOrder.nativeOrder()); dest.put(data, 0, data.length); break; } case BufferedImage.TYPE_INT_RGB: { logger.debug("Int RGB"); int[] data = ((DataBufferInt) img.getRaster().getDataBuffer()).getData(); dest = ByteBuffer.allocateDirect(data.length * BufferUtil.SIZEOF_INT); dest.order(ByteOrder.nativeOrder()); dest.asIntBuffer().put(data, 0, data.length); break; } default: throw new RuntimeException("Unsupported image type " + img.getType()); } if (mipmapped) { logger.debug("mipmapped"); glu.gluBuild2DMipmaps(target, GL.GL_RGB8, img.getWidth(), img.getHeight(), GL.GL_RGB, GL.GL_UNSIGNED_BYTE, dest); } else { logger.debug("image2D"); gl.glTexImage2D(target, 0, GL.GL_RGB, img.getWidth(), img.getHeight(), 0, GL.GL_RGB, GL.GL_UNSIGNED_BYTE, dest); } }
J'indique le code appelant :dans ma methode init :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 URL url = getResource(texture); if (url == null) { throw new RuntimeException("Error reading resource " + texture); } BufferedImage img = ImageIO.read(url); logger.debug("toto "+url.getPath()); keys.add(texture); storageTextures.add(new int[1]); //gl.glGenTextures(1, storageTextures.get(keys.size()-1), keys.size()-1); makeRGBTexture(gl, new GLU(), img, GL.GL_TEXTURE_2D, true); gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MIN_FILTER,GL.GL_LINEAR); gl.glTexParameteri(GL.GL_TEXTURE_2D,GL.GL_TEXTURE_MAG_FILTER,GL.GL_LINEAR);
GL.glEnable(GL.GL_TEXTURE_2D);
Ensuite pour le display :
Avez vous deja rencontré ce pb ?Code:
1
2
3
4
5
6
7
8
9
10
11 gl.glEnable(GL.GL_TEXTURE_2D); gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE); gl.glDisable(GL.GL_TEXTURE_GEN_S); gl.glDisable(GL.GL_TEXTURE_GEN_T); gl.glBindTexture( GL.GL_TEXTURE_2D, indexTexture); gl.glBegin(GL.GL_POLYGON); ... gl.glDisable(GL.GL_TEXTURE_2D);
Comment le corrigé ?