हमारे पास JOGL का उपयोग करके काम पर बहुत भाग्य है। नया 2.0 संस्करण http://jogamp.org/ पर है (अंतिम "पुराना" संस्करण http://download.java.net/media/jogl/builds/archive/jsr-231-1.1.1a/ पर है)।
एसडब्ल्यूटी के साथ जॉग 2 के लिए विशेष रूप से, मुझे http://wadeawalker.wordpress.com/2010/10/09/tutorial-a-cross-platform-workbench-program-using-java-opengl-and-eclipse/ से शुरू होने वाले ट्यूटोरियल की एक श्रृंखला मिली है जो कि क्रॉस-प्लेटफार्म जॉगएल एसडब्ल्यूटी अनुप्रयोगों को कैसे स्थापित करने के लिए बिल्कुल सही तरीके से प्रदर्शित करता है, जो स्थापित करने योग्य देशी बाइनरी के साथ पूरा होता है।
या यदि आप एक्लिप्स आरसीपी का उपयोग नहीं करना चाहते हैं, तो यहां एक आसान उदाहरण है जो सिर्फ जॉग 2 और एसडब्ल्यूटी के साथ एक त्रिकोण खींचता है। इसे बनाने के लिए, इसे swt.jar के साथ एक प्रोजेक्ट में रखें (http://www.eclipse.org/swt/ से) और नवीनतम जॉग ऑटोबॉल्ड .jar और।डीएलएल फाइलें (http://jogamp.org/ से)। इस सरल उदाहरण के साथ एकमात्र समस्या यह है कि यह कुछ अतिरिक्त सहायता के बिना क्रॉस-प्लेटफार्म नहीं होगा - आपको उस क्षमता की आवश्यकता है जो ग्रहण आरसीपी आपको एक परियोजना में एक साथ मंच पुस्तकालयों के कई सेटों को बंडल करने की अनुमति देता है।
package name.wadewalker.onetriangle;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.opengl.GLCanvas;
import org.eclipse.swt.opengl.GLData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import javax.media.opengl.GL;
import javax.media.opengl.GLProfile;
import javax.media.opengl.GL2;
import javax.media.opengl.GLContext;
import javax.media.opengl.GLDrawableFactory;
import javax.media.opengl.glu.GLU;
public class OneTriangle {
public static void main(String [] args) {
GLProfile.initSingleton(true);
GLProfile glprofile = GLProfile.get(GLProfile.GL2);
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new FillLayout());
GLData gldata = new GLData();
gldata.doubleBuffer = true;
// need SWT.NO_BACKGROUND to prevent SWT from clearing the window
// at the wrong times (we use glClear for this instead)
final GLCanvas glcanvas = new GLCanvas(composite, SWT.NO_BACKGROUND, gldata);
glcanvas.setCurrent();
final GLContext glcontext = GLDrawableFactory.getFactory(glprofile).createExternalGLContext();
// fix the viewport when the user resizes the window
glcanvas.addListener(SWT.Resize, new Listener() {
public void handleEvent(Event event) {
setup(glcanvas, glcontext);
}
});
// draw the triangle when the OS tells us that any part of the window needs drawing
glcanvas.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent paintevent) {
render(glcanvas, glcontext);
}
});
shell.setText("OneTriangle");
shell.setSize(640, 480);
shell.open();
while(!shell.isDisposed()) {
if(!display.readAndDispatch())
display.sleep();
}
glcanvas.dispose();
display.dispose();
}
private static void setup(GLCanvas glcanvas, GLContext glcontext) {
Rectangle rectangle = glcanvas.getClientArea();
glcanvas.setCurrent();
glcontext.makeCurrent();
GL2 gl = glcontext.getGL().getGL2();
gl.glMatrixMode(GL2.GL_PROJECTION);
gl.glLoadIdentity();
// coordinate system origin at lower left with width and height same as the window
GLU glu = new GLU();
glu.gluOrtho2D(0.0f, rectangle.width, 0.0f, rectangle.height);
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glViewport(0, 0, rectangle.width, rectangle.height);
glcontext.release();
}
private static void render(GLCanvas glcanvas, GLContext glcontext) {
Rectangle rectangle = glcanvas.getClientArea();
glcanvas.setCurrent();
glcontext.makeCurrent();
GL2 gl = glcontext.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
// draw a triangle filling the window
gl.glLoadIdentity();
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(1, 0, 0);
gl.glVertex2f(0, 0);
gl.glColor3f(0, 1, 0);
gl.glVertex2f(rectangle.width, 0);
gl.glColor3f(0, 0, 1);
gl.glVertex2f(rectangle.width/2, rectangle.height);
gl.glEnd();
glcanvas.swapBuffers();
glcontext.release();
}
}
स्रोत
2010-11-16 23:37:13
2.0? जॉगल मर चुका है – user697111
जॉगएल ओपनजीएल 1.3 - 3.0, 3.1 - 3.3, ≥ 4.0, ईएस 1.x और ईएस 2.x विनिर्देश के साथ-साथ लगभग सभी विक्रेता एक्सटेंशन में एपीआई तक पूर्ण पहुंच प्रदान करता है। यह एडब्ल्यूटी और स्विंग विजेट सेट के साथ-साथ नेटिवविंडो एपीआई का उपयोग कर कस्टम विंडोिंग टूलकिट के साथ एकीकृत करता है। यह सन माइक्रोसिस्टम्स में गेम टेक्नोलॉजी ग्रुप द्वारा शुरू की गई ओपन-सोर्स टेक्नोलॉजीज के एक सूट का हिस्सा है। http://jogamp.org/jogl/www/ –