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 : 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 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 : 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 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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é ?
Partager