Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : OpenGL et Z-Buffer [ Multimédia / Autre ] (JCDjcd)

samedi 15 novembre 2008 à 23:31:05 | OpenGL et Z-Buffer

JCDjcd

Bonsoir,

J'ai des problèmes pour arriver à utiliser le Z-Buffer...
Mon problème c'est que pour l'instant c'est l'ordre dans lequel j'ai

ajouté les triangles qui compte
alors que moi je voudrais que ca soit en fonction de la position de

l'observateur... (de la vraie 3D quoi)

Voici mon code :
**********************************************************

importjava.awt.*;

import

java.awt.event.*;

import

javax.swing.*;

import

javax.media.opengl.*;

import

javax.media.opengl.glu.GLU;

 

//===================================================

public

classTestZBufferextendsJFrameimplements GLEventListener, MouseListener,MouseMotionListener

{

//---------------------------------------------------

static

finallong serialVersionUID = 1L;

static

finalGLU glu = new GLU();

//---------------------------------------------------

GLCanvas

canvas;

float

theta,phi,zoom;

float

oldX,oldY,oldTheta,oldPhi;

boolean

bMouse;

//---------------------------------------------------

public

TestZBuffer(String title)

{

super(title);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.bMouse = false;

this.theta = 0.f;

this.phi = 0.f;

this.zoom = 5f;

canvas = new GLCanvas(new GLCapabilities());

canvas.addGLEventListener(this);

canvas.addMouseListener(this);

canvas.addMouseMotionListener(this);

canvas.requestFocus();

this.getContentPane().add(canvas,BorderLayout.CENTER);

this.setSize(500,500);

this.setVisible(true);

} // TestZBuffer()

//---------------------------------------------------

public

staticvoidmain(String[] args)

{

TestZBuffer frm = new TestZBuffer("Test du Z-Buffer en OpenGL");

frm.setVisible(true);

} // main()

//---------------------------------------------------

public

voidinit(GLAutoDrawable drawable)

{

GL gl;

gl = drawable.getGL();

gl.setSwapInterval(1);

gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

gl.glClearDepth(1.0f);

gl.glEnable(GL.GL_DEPTH_TEST);

gl.glDepthFunc(GL.GL_LEQUAL);

} // init()

public

voidreshape(GLAutoDrawable drawable, int x, int y, int width,int height)

{

GL gl;

gl = drawable.getGL();

gl.glViewport(0,0,width,height);

gl.glMatrixMode(GL.GL_PROJECTION);

gl.glLoadIdentity();

glu.gluPerspective(45.,(float)width/(float)height,0.,100000.);

} // reshape()

public

voiddisplay(GLAutoDrawable drawable)

{

GL gl;

gl = drawable.getGL();

gl.glMatrixMode(GL.GL_MODELVIEW);

gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);

gl.glLoadIdentity();

glu.gluLookAt(zoom*Math.cos(theta)*Math.cos(phi),zoom*Math.sin(theta)*Math.cos(phi),zoom*Math.sin(phi),0,0,0,Math.cos(theta-Math.PI)*Math.cos(Math.PI/2.-phi),Math.sin(theta-Math.PI)*Math.cos(Math.PI/2.-phi),Math.sin(Math.PI/2.-phi));

gl.glBegin(GL.GL_TRIANGLES);

gl.glColor3f(0f,1f,0f);

gl.glVertex3f(0f,0f,0f);

gl.glVertex3f(1f,0f,0f);

gl.glVertex3f(0f,1f,0f);

gl.glColor3f(1f,0f,0f);

gl.glVertex3f(0f,0f,0.1f);

gl.glVertex3f(1f,0f,0.1f);

gl.glVertex3f(0f,1f,0.1f);

gl.glColor3f(0f,0f,1f);

gl.glVertex3f(0f,0f,0.2f);

gl.glVertex3f(1f,0f,0.2f);

gl.glVertex3f(0f,1f,0.2f);

gl.glEnd();

} // display()

public

voiddisplayChanged(GLAutoDrawable drawable, boolean modeChanged,boolean deviceChanged)

{

} // displayChanged()

//---------------------------------------------------

public

voidmouseClicked(MouseEvent e){}

public

voidmouseReleased(MouseEvent e)

{

this.bMouse = false;

}

public

voidmouseDragged(MouseEvent e)

{

if(this.bMouse == false)

{

this.bMouse = true;

oldX = e.getX();

oldY = e.getY();

oldTheta = theta;

oldPhi = phi;

}

theta = oldTheta + 2*3.141592f*(e.getX()-oldX)/((float)this.getWidth());

phi = oldPhi + 2*3.141592f*(e.getY()-oldY)/((float)this.getHeight());

canvas.display();

}

 

public

voidmousePressed(MouseEvent e){}

public

voidmouseEntered(MouseEvent e){}

public

voidmouseExited(MouseEvent e){}

public

voidmouseMoved(MouseEvent e){}

//---------------------------------------------------

} // class TestZbuffer

**********************************************************

JCDjcd




Cette discussion est classé dans : math, gl, 1f, 0f, phi


Répondre à ce message

Sujets en rapport avec ce message

Problème de caméra OpenGL [ par MeraK1337 ] Bonjour, je suis débutant en java et j'ai un problème pour le contrôle de ma caméra sur une scène 3D.J'ai besoin d'adapter une classe que j'ai récupér probleme painter [ par mouhoub ] bonjour,j'ai un probleme avec une methode qui ne veut pas marcher, bhein en fait je veux creer un header d'un formulaire en se servant de l'api de swi Sortir un zéro avec un Math.random()*10+1 [ par daviddubois ] Bonjour tout le monde,J'essaie d'avoir des chiffres de 0 à 10 avec un Math.random(), le problème est qu'il sort des chiffres entre 1 et 10.Il ne sort la fonction Math.random() [ par dorine82 ] bonjour,j'aimerais savoir comment utiliser deux threads chacun a son tour. si par exemple j' ai le thread A et le thread B , je dois avoir comme resul tableau sans repitition [ par gigi00 ] bonjourj ai besoin d' aide pour faire fonctioner se programmedans ce programme je veux réaliser un tableau de [9][9] et qui rempli aleatoirement les c jButton [ par kyokosan ] salut j'ai un problème dans jButton2_actionPerformed car j'ai mis dans cette fonction ce code   variable=Math.random()*100.intValue();while (variable= vector [ par gigi00 ] bonjour je veux que ce programme rempli aleatoirement  un tableau de 9 saans repition mais j ai un probleme  au niveau des colonnes import java.util.V interface graphique, dessiner un vecteur [ par le_papy ] bonjour, je suis actuelement en train de developper une petit programme perso (pour aprendre le langage Java) et je souhaite dessiner un dans une fene Génération de code à 8 chiffres. [ par fiftyxav03 ] Bonjour à tous, alors mon problème est le suivant:  Je voudrais générer 1 liste de code à 8 chiffres automatiquement; Or j'ai simplement réussi à obte requiet gens baléz en math et algo [ par mangiacapra ] bonjour ,je suis nul en math,mais j'aimré une fonction en java ki prends en entré un vecteur de points et ki donne en sortie la fonction ki les genére


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,172 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.