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 :
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);
		}
	}
Je pense que le soucis viens d'un parametrage dans le code ci dessus.

J'indique le code appelant :
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);
dans ma methode init :
GL.glEnable(GL.GL_TEXTURE_2D);


Ensuite pour le display :
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);
Avez vous deja rencontré ce pb ?
Comment le corrigé ?