opengl in java.....jogl


eujaja


vreau sa implementez in java ceva functii simple de opengl...sa desenez niste figuri si sa le suprapun.
folosesc pachetul javax.media.opengl.


public void display(GLDrawable gLDrawable)
{.....
final GL gl = gLDrawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
.....
}

Problema este aici : final GL gl = gLDrawable.getGL();

nu-mi recunoaste metoda getGL() desi am inculs
import javax.media.opengl.GLAutoDrawable

http://download.java.net/media/jogl/builds...blic/index.html

ceva i-mi scapa.m-ati putea ajuta?
RAN
zi eroarea completa, eventual pune tot codul
 
eujaja
am pus codul aici....am inclus mai toate librariile dar tot degeaba nu -mi recunoaste medoda getGL() si getGLU():

cannot find symbol; symbol : method getGL(), location: interface javax.media.opengl.GLDrawable at line 24 (24:32)

import java.awt.*;
import java.awt.event.*;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GL;
import javax.media.opengl.*;
import javax.media.opengl.GLDrawable;
import javax.media.opengl.glu.GLU;
import com.sun.opengl.util.Animator;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLEventListener;


public class Lesson02
{
static class Renderer
implements GLEventListener,
KeyListener
{

public void display(GLDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
gl.glBegin(GL.GL_TRIANGLES); // Drawing Using Triangles
gl.glVertex3f( 0.0f, 1.0f, 0.0f); // Top
gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
gl.glEnd(); // Finished Drawing The Triangle
gl.glTranslatef(3.0f, 0.0f, 0.0f);
gl.glBegin(GL.GL_QUADS); // Draw A Quad
gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
gl.glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
gl.glEnd(); // Done Drawing The Quad
gl.glFlush();
}


public void displayChanged(GLDrawable gLDrawable, boolean modeChanged, boolean deviceChanged)
{
}

public void init(GLDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glShadeModel(GL.GL_FLAT);
gLDrawable.addKeyListener(this);
}


public void reshape(GLDrawable gLDrawable, int x, int y, int width, int height)
{
final GL gl = gLDrawable.getGL();
final GLU glu = gLDrawable.getGLU();

if (height <= 0) // avoid a divide by zero error!
height = 1;
final float h = (float)width / (float)height;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 1.0, 20.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}


public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(0);
}


public void keyReleased(KeyEvent e) {}


public void keyTyped(KeyEvent e) {}

public void init(GLAutoDrawable gLAutoDrawable) {
}

public void display(GLAutoDrawable gLAutoDrawable) {
}

public void reshape(GLAutoDrawable gLAutoDrawable, int _int, int _int2,
int _int3, int _int4) {
}

public void displayChanged(GLAutoDrawable gLAutoDrawable,
boolean _boolean, boolean _boolean2) {
}
}


public static void main(String[] args)
{
Frame frame = new Frame("Lesson 2: Your First Polygon");
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
canvas.addGLEventListener(new Renderer());
frame.add(canvas);
frame.setSize(640, 480);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.show();
canvas.requestFocus();
}
}
RAN
pai GLDrawable nici nu defineste metodele alea doua, ele sunt definite in GLAutoDrawable
eujaja
faza e ca eu am inclus GlAutoDrawable si tot aceeasi eroare i-mi da....tot nu sti cine e getGL() si getGLU()
am citit si eu pe net ca cele doua functii sunt implementate in GlAutoDrawable.....da nu inteleg at de ce nu mi le vede.Aveti vreo idee?
bogho
pai eu vad ca in cod tot pentru GLDrawable incerci cele doua metode

CODE
public void display(GLDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();


CODE
public void reshape(GLDrawable gLDrawable, int x, int y, int width, int height)
{
final GL gl = gLDrawable.getGL();
final GLU glu = gLDrawable.getGLU();
eujaja
merci mult aveai dreptate..nu am fost atent.
am facut ceva modificari......dar acum nu stie cine este getGLU()!!!!!!!!!!!!!!


import java.awt.*;
import java.awt.event.*;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GL;
import javax.media.opengl.*;
import javax.media.opengl.glu.GLU;
import com.sun.opengl.util.Animator;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLDrawable;
import javax.media.opengl.GLEventListener;
import javax.media.opengl.GLDrawableFactory;


public class Lesson02
{
static class Renderer
implements GLEventListener,
KeyListener
{

public void display(GLAutoDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
gl.glTranslatef(-1.5f, 0.0f, -6.0f);
gl.glBegin(GL.GL_TRIANGLES); // Drawing Using Triangles
gl.glVertex3f( 0.0f, 1.0f, 0.0f); // Top
gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
gl.glEnd(); // Finished Drawing The Triangle
gl.glTranslatef(3.0f, 0.0f, 0.0f);
gl.glBegin(GL.GL_QUADS); // Draw A Quad
gl.glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
gl.glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right
gl.glVertex3f( 1.0f,-1.0f, 0.0f); // Bottom Right
gl.glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
gl.glEnd(); // Done Drawing The Quad
gl.glFlush();
}


public void displayChanged(GLAutoDrawable gLDrawable, boolean modeChanged, boolean deviceChanged)
{
}

public void init(GLAutoDrawable gLDrawable)
{
final GL gl = gLDrawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glShadeModel(GL.GL_FLAT);
gLDrawable.addKeyListener(this);
}


public void reshape(GLAutoDrawable gLDrawable, int x, int y, int width, int height)
{
final GL gl = gLDrawable.getGL();
final GLU glu = gLDrawable.getGLU();

if (height <= 0) // avoid a divide by zero error!
height = 1;
final float h = (float)width / (float)height;
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
glu.gluPerspective(45.0f, h, 1.0, 20.0);
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}


public void keyPressed(KeyEvent e)
{
if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(0);
}


public void keyReleased(KeyEvent e) {}


public void keyTyped(KeyEvent e) {}

/* public void init(GLAutoDrawable gLAutoDrawable) {
}

public void display(GLAutoDrawable gLAutoDrawable) {
}

public void reshape(GLAutoDrawable gLAutoDrawable, int _int, int _int2,
int _int3, int _int4) {
}

public void displayChanged(GLAutoDrawable gLAutoDrawable,
boolean _boolean, boolean _boolean2) {
}
*/
}


public static void main(String[] args)
{
Frame frame = new Frame("Lesson 2: Your First Polygon");
GLCanvas canvas = GLDrawableFactory.getFactory().createGLCanvas(new GLCapabilities());
canvas.addGLEventListener(new Renderer());
frame.add(canvas);
frame.setSize(640, 480);
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.show();
canvas.requestFocus();
}
}


The class kkk.test is not a subclass of java.awt.Applet ce fel de eroare este asta?.....i-mi da dupa compilare
 
ciuly
1) nu iti da dupa compilare ca iti da la rulare. exprima-te corect.
2) incearca sa folosesti tagul CODE.
eujaja
am pus in tagul code fisierul cu extensia .class........defapt mi l-a creat automat jbuilderul
eujaja


am incercat sa incarc apletul in iexplorer si nu merge sad.gif
zice ceva de genul injava console

java.lang.NoClassDefFoundError: javax/media/opengl/GLEventListener
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-10" java.lang.NullPointerException
at sun.plugin.util.GrayBoxPainter.showLoadingError(Unknown Source)
at sun.plugin.AppletViewer.showAppletException(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
ciuly
QUOTE(eujaja @ Sep 6 2006, 11:53) *
am pus in tagul code fisierul cu extensia .class........defapt mi l-a creat automat jbuilderul

ma refeream la forum. scrii [ code ] paste la codul tau [/ code ] dar fara spatii.
bogho
QUOTE(eujaja @ Sep 6 2006, 12:08) *
am incercat sa incarc apletul in iexplorer si nu merge sad.gif
zice ceva de genul injava console

java.lang.NoClassDefFoundError: javax/media/opengl/GLEventListener
......


pai ar trebui sa exporti si libraria care contine GLEventListener (jogl.jar sau ce anume folosesti)
bitu_bitu2002
Deci am urmatoarele clase Java3D:

CODE

// Java core packages
import java.awt.*;
import java.awt.event.*;

// Java extension packages
import javax.swing.*;
import javax.swing.event.*;

public class Java3DExample extends JFrame {

private Java3DWorld java3DWorld; // 3D scene panel
private JPanel controlPanel; // 3D scene control panel

// initialize Java3DWorld and ControlPanel
public Java3DExample()
{
super( "Java 3D Graphics Demo" );

java3DWorld = new Java3DWorld( "images/canapea.jpg" );
controlPanel = new ControlPanel( java3DWorld );

// add Components to JFrame
getContentPane().add( java3DWorld, BorderLayout.CENTER );
getContentPane().add( controlPanel, BorderLayout.EAST );

} // end Java3DExample constructor

// start program
public static void main( String args[] )
{
Java3DExample application = new Java3DExample();
application.setDefaultCloseOperation( EXIT_ON_CLOSE );
application.pack();
application.setVisible( true );
}
}







// Java core packages

import java.awt.*;
import java.awt.event.*;

// Java extension packages
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;

public class ControlPanel extends JPanel {

// JSliders control lighting color
private JSlider redSlider, greenSlider, blueSlider;

// JCheckbox turns on texture mapping
private JCheckBox textureCheckBox;

// graphics display environment
private Java3DWorld java3DWorld;

// ControlPanel constructor
public ControlPanel( Java3DWorld tempJ3DWorld )
{
java3DWorld = tempJ3DWorld;

// assemble instruction panel
JPanel instructionPanel = new JPanel();

TitledBorder titledBorder =
new TitledBorder( "Transformation Instructions" );

titledBorder.setTitleJustification( TitledBorder.CENTER );
instructionPanel.setBorder( titledBorder );

JLabel rotationInstructions =
new JLabel( "Rotation - Left Mouse Button",
SwingConstants.CENTER );

JLabel translationInstructions =
new JLabel( "Translation - Right Mouse Button",
SwingConstants.CENTER );


JLabel scalingInstructions =
new JLabel( "Scale - Alt + Left Mouse Button",
SwingConstants.CENTER );

// add instruction JLabels to JPanel
instructionPanel.add( rotationInstructions );
instructionPanel.add( translationInstructions );
instructionPanel.add( scalingInstructions );

// assemble texture mapping control panel
JPanel texturePanel = new JPanel();

TitledBorder textureBorder =
new TitledBorder( "Texture Controls" );

textureBorder.setTitleJustification( TitledBorder.CENTER );
texturePanel.setBorder( textureBorder );

textureCheckBox = new JCheckBox(
"Apply Texture Map to Image" );

texturePanel.add( textureCheckBox );

// create ItemListener for JCheckBox
textureCheckBox.addItemListener(
new ItemListener() {

// invoked when checkbox selected/deselected
public void itemStateChanged( ItemEvent event )
{
if( event.getStateChange() == ItemEvent.SELECTED )
Java3DWorld.updateTexture( true );
else
Java3DWorld.updateTexture( false );
}

} // end anonymous inner class
);

// create JPanel with instructionPanel and texturePanel
JPanel topPanel = new JPanel(
new GridLayout( 2, 1, 0, 20 ) );

topPanel.add( instructionPanel );
topPanel.add( texturePanel );

// assemble lighting color control panel
JPanel colorPanel = new JPanel(
new FlowLayout( FlowLayout.LEFT, 15, 15 ) );

TitledBorder colorBorder =
new TitledBorder( "Direct Lighting Color Controls" );


colorBorder.setTitleJustification( TitledBorder.CENTER );
colorPanel.setBorder( colorBorder );

JLabel redLabel = new JLabel( "R" );
JLabel greenLabel = new JLabel( "G" );
JLabel blueLabel = new JLabel( "B" );

// create JSlider for adjusting red light component
redSlider = new JSlider(
SwingConstants.HORIZONTAL, 0, 255, 25 );

redSlider.setMajorTickSpacing( 25 );
redSlider.setPaintTicks( true );

// create JSlider for adjusting green light component
greenSlider = new JSlider(
SwingConstants.HORIZONTAL, 0, 255, 25 );

greenSlider.setMajorTickSpacing( 25 );
greenSlider.setPaintTicks( true );

// create JSlider for adjusting blue light component
blueSlider = new JSlider(
SwingConstants.HORIZONTAL, 0, 255, 25 );

blueSlider.setMajorTickSpacing( 25 );
blueSlider.setPaintTicks( true );

// create ChangeListener for JSliders
ChangeListener slideListener = new ChangeListener() {

// invoked when slider has been accessed
public void stateChanged( ChangeEvent event )
{
Color color = new Color(
redSlider.getValue(), greenSlider.getValue(),
blueSlider.getValue() );

Java3DWorld.changeColor( color );
}

}; // end anonymous inner class

// add listener to sliders
redSlider.addChangeListener( slideListener );
greenSlider.addChangeListener( slideListener );
blueSlider.addChangeListener( slideListener );

// add lighting color control components to colorPanel
colorPanel.add( redLabel );
colorPanel.add( redSlider );
colorPanel.add( greenLabel );
}}






// Java core packages
import java.awt.event.*;
import java.awt.*;
import java.net.*;

// Java extension packages
import javax.swing.event.*;
import javax.media.j3d.*;
import javax.vecmath.*;

// Java 3D utility packages
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.mouse.*;

public class Java3DWorld extends Canvas3D {

/**
*
*/
private static final long serialVersionUID = 1L;
private Appearance appearance; // 3D object's appearance
private Box shape; // 3D object to manipulate
private static Color3f lightColor; // Light color
private Light ambientLight; // ambient scene lighting
private static Light directionalLight; //directional light
private Material material; // 3D objects color object
private SimpleUniverse simpleUniverse; // 3D scene environment
private static TextureLoader textureLoader; // 3D object's texture

// holds 3D transformation information
private TransformGroup transformGroup;

private String imageName; // texture image file name

// Java3DWorld constructor
public Java3DWorld( String imageFileName )
{
super( SimpleUniverse.getPreferredConfiguration() );

imageName = imageFileName;

// create SimpleUniverse (3D Graphics environment)
simpleUniverse = new SimpleUniverse( this );

// set default view point and direction
ViewingPlatform viewPlatform =
simpleUniverse.getViewingPlatform();

viewPlatform.setNominalViewingTransform();

// create 3D scene
BranchGroup branchGroup = createScene();

// attach BranchGroup to SimpleUniverse
simpleUniverse.addBranchGraph( branchGroup );

} // end Java3DWorld constructor

// create 3D scene
public BranchGroup createScene()
{
BranchGroup scene = new BranchGroup();

// initialize TransformGroup
transformGroup = new TransformGroup();

// set TransformGroup's READ and WRITE permission
transformGroup.setCapability(
TransformGroup.ALLOW_TRANSFORM_READ );

transformGroup.setCapability(
TransformGroup.ALLOW_TRANSFORM_WRITE );

// add TransformGroup to BranchGroup
scene.addChild( transformGroup );

// create BoundingSphere
BoundingSphere bounds = new BoundingSphere(
new Point3d( 0.0f, 0.0f, 0.0f ), 100.0 );

appearance = new Appearance(); // create object appearance
material = new Material(); // create texture matieral
appearance.setMaterial( material );

String rgb = new String( "RGB" );

// load texture for scene object
textureLoader = new TextureLoader(
Java3DWorld.class.getResource( imageName ), rgb, this );

// set capability bits for enabling texture
textureLoader.getTexture().setCapability(
Texture.ALLOW_ENABLE_WRITE );

// initial texture will not show
textureLoader.getTexture().setEnable( false );

// set object's texture
appearance.setTexture( textureLoader.getTexture() );

// create object geometry
Box shape = new Box( 0.3f, 0.3f, 0.3f,
Box.GENERATE_NORMALS | Box.GENERATE_TEXTURE_COORDS,
appearance );

// add geometry to TransformGroup
transformGroup.addChild( shape );

// initialize Ambient lighting
ambientLight = new AmbientLight();
ambientLight.setInfluencingBounds( bounds );

// initialize directionalLight
directionalLight = new DirectionalLight();

lightColor = new Color3f(); // initialize light color

// set initial DirectionalLight color
directionalLight.setColor( lightColor );

// set capability bits to allow DirectionalLight's
// Color and Direction to be changed
directionalLight.setCapability(
DirectionalLight.ALLOW_DIRECTION_WRITE );

directionalLight.setCapability(
DirectionalLight.ALLOW_DIRECTION_READ );

directionalLight.setCapability(
DirectionalLight.ALLOW_COLOR_WRITE );

directionalLight.setCapability(
DirectionalLight.ALLOW_COLOR_READ );

directionalLight.setInfluencingBounds( bounds );


// add light nodes to BranchGroup
scene.addChild( ambientLight );
scene.addChild( directionalLight );

// initialize rotation behavior
MouseRotate rotateBehavior = new MouseRotate();
rotateBehavior.setTransformGroup( transformGroup );
rotateBehavior.setSchedulingBounds( bounds );

// initialize translation behavior
MouseTranslate translateBehavior = new MouseTranslate();
translateBehavior.setTransformGroup( transformGroup );
translateBehavior.setSchedulingBounds(
new BoundingBox( new Point3d( -1.0f, -1.0f, -1.0f ),
new Point3d( 1.0f, 1.0f, 1.0f ) ) );

// initialize scaling behavior
MouseZoom scaleBehavior = new MouseZoom();
scaleBehavior.setTransformGroup( transformGroup );
scaleBehavior.setSchedulingBounds( bounds );

// add behaviors to BranchGroup
scene.addChild( scaleBehavior );
scene.addChild( rotateBehavior );
scene.addChild( translateBehavior );

scene.compile();

return scene;

} // end method createScene

// change DirectionLight color
public static void changeColor( Color color )
{
lightColor.set( color );
directionalLight.setColor( lightColor );
}

// change geometry surface to textured image or material color
public static void updateTexture( boolean textureValue )
{
textureLoader.getTexture().setEnable( textureValue );
}

// change image used for texture
public void setImageName( String imageFileName )
{
imageName = imageFileName;
}

// get image file name
public String getImageName()
{
return imageName;
}

// return preferred dimensions of Container
public Dimension getPreferredSize()
{
return new Dimension( 500, 500 );
}

// return minimum size of Container
public Dimension getMinimumSize()
{
return getPreferredSize();
}
}


Deci..le rulez cu eclipse si la rulare imi da urmatoarea eroare
"


java.lang.IllegalStateException: GL_VERSION
at javax.media.j3d.Canvas3D.createNewContext(Native Method)
at javax.media.j3d.Canvas3D.createNewContext(Canvas3D.java:2429)
at javax.media.j3d.Renderer.doWork(Renderer.java:747)
at javax.media.j3d.J3dThread.run(J3dThread.java:250)
"
lupu1001
Cine crezi ca iti citeste tie codul asta neformatat?
Tu l-ai putea citi la o prima vedere!?

Invata sa folosesti formatarea de cod-->

[code_] Codul tau aici.. i[/_code]

PS.
Trebuie eliminat caracterul " _ " din expresia : [code_] Codul tau aici.. i[/_code]
Exemplu :
CODE

line1
       line 2
             line3


Vad ca ti-a mai zis careva dar .. nimic!

Multa bafta

QUOTE (bitu_bitu2002 @ Sep 28 2006, 13:30) *
Deci am urmatoarele clase Java3D:
...

andrei_0
lupule, uita-te si tu din ce data e postul la care ai raspuns.
lupu1001
Nu strica, poate mai da si altcineva un ochi si ia aminte thumbsup.gif

QUOTE (andrei_0 @ Aug 1 2008, 18:45) *
lupule, uita-te si tu din ce data e postul la care ai raspuns.


Salut!
Reclama
Am verificat si e pe bune! La job.ro se dau super premii: 8 Sony Vaio, 8 HTC-uri cu Windows si GPS si 16 iPod-uri Nano de 8Gb.
Si culmea, daca le spui si prietenilor tai ai sanse mai mari de castig
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.