Afficher une image avec JOGL
Bonjour,
je souhaiterai afficher une image avec JOGL.
J'utilise une classe image, un pixel étant un short :
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
|
public class Image
{
private int width ; // Largeur de l'image
private int height ; // Hauteur de l'image
private int size ; // Taille totale de l'image = hauteur * largeur
private int maxgrey ; // Valeur maximum du niveau de gris
private Pixel data[][] ;
public Image()
{
}
public Image(int largeur, int hauteur)
{
setDimension(largeur, hauteur) ;
}
public void setDimension(int largeur, int hauteur)
{
int i, j ;
if ( (largeur < 0) || (hauteur < 0) )
{
System.err.println("Dimensions incorrectes de l'image : " + largeur + " & " + hauteur) ;
return ;
}
width = largeur ;
height = hauteur ;
size = largeur * hauteur ;
data = new Pixel[hauteur][largeur] ;
for (i=0 ; i < hauteur ; i++)
for (j=0 ; j < largeur ; j++) data[i][j] = new Pixel() ;
}
....
} |
Mais je n'arrive pas à afficher mon image à l'écran. glDrawPixel demande un ShortBuffer (java.nio.*)... J'ai donc ceci :
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 40 41
|
public class Affichages implements GLEventListener
{
private int TailleZoom = 100 ;
public Affichages()
{
}
/* init() sera appelée une fois au début de l'animation C'est dans cette méthode que nous nous chargerons de toute les opérations d'initialisation */
/* GLEventListener renvoie un contexte (drawable) que nous allons utiliser pour instancier un objet de type GL , qui nous permettra d'utiliser
* les fonctions OpenGL */
public void init(GLAutoDrawable drawable)
{
GL gl = drawable.getGL() ;
gl.setSwapInterval(1) ; /* Cette fonction permet de désactiver la syncronisation verticale, indépendement de la plateforme utilisée */
TailleZoom = 100 ;
}
public void display(GLAutoDrawable drawable)
{
int i, j ;
GL gl = drawable.getGL() ;
short[] titi = new short[MasterSIS.image.getSize()] ;
ShortBuffer toto = null ;
// Le buffer étant à une seule dimension, je change la dimension de mon image
for (i=0 ; i < MasterSIS.image.getHeight() ; i++)
for (j=0 ; j < MasterSIS.image.getWidth() ; j++)
titi[i*MasterSIS.image.getWidth()+j] = MasterSIS.image.getPixel(i, j) ;
gl.glClear(GL.GL_COLOR_BUFFER_BIT) ; // clear window
gl.glPixelZoom((float)(TailleZoom/100.0), (float)(TailleZoom/100.0)) ;
// J'essai d'afficher mon image dans le ShortBuffer.
gl.glDrawPixels(MasterSIS.image.getWidth(), MasterSIS.image.getHeight(), gl.GL_LUMINANCE16, gl.GL_UNSIGNED_SHORT, toto.wrap(titi)) ;
gl.glFlush(); // flush GL buffers
} |
Est ce que quelqu'un sait comment faire ??
Merci par avance...