In Matlab I have
import javax.media.opengl.GL;
How do I now use OpenGL? Can anyone provide a very small sample?
Please note: If this wasnt in Matlab then it would be easy. But the question specifically relates to using this in Matlab.
In Matlab I have
import javax.media.opengl.GL;
How do I now use OpenGL? Can anyone provide a very small sample?
Please note: If this wasnt in Matlab then it would be easy. But the question specifically relates to using this in Matlab.
MATLAB comes with the JOGL 1.x libraries available on its static classpath, so it's a matter of compiling your source code (with those JAR files on the classpath), then running the program inside MATLAB.
Below is a "hello world" OpenGL example in Java. I show how to compile and run it directly from inside MATLAB:
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.media.opengl.GL;
import javax.media.opengl.GLAutoDrawable;
import javax.media.opengl.GLCanvas;
import javax.media.opengl.GLEventListener;
public class HelloWorld implements GLEventListener {
public static void main(String[] args) {
Frame frame = new Frame("JOGL HelloWorld");
GLCanvas canvas = new GLCanvas();
canvas.addGLEventListener(new HelloWorld());
frame.add(canvas);
frame.setSize(300, 300);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public void display(GLAutoDrawable drawable) {
GL gl = drawable.getGL();
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(1.0f, 1.0f, 1.0f);
gl.glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
gl.glBegin(GL.GL_POLYGON);
gl.glVertex2f(-0.5f, -0.5f);
gl.glVertex2f(-0.5f, 0.5f);
gl.glVertex2f(0.5f, 0.5f);
gl.glVertex2f(0.5f, -0.5f);
gl.glEnd();
gl.glFlush();
}
public void init(GLAutoDrawable drawable) {
}
public void reshape(GLAutoDrawable drawable,
int x, int y, int width, int height) {
}
public void displayChanged(GLAutoDrawable drawable,
boolean modeChanged, boolean deviceChanged) {
}
}
%# compile the Java code
jPath = fullfile(matlabroot,'java','jarext',computer('arch'));
cp = [fullfile(jPath,'jogl.jar') pathsep fullfile(jPath,'gluegen-rt.jar')];
cmd = ['javac -cp "' cp '" HelloWorld.java'];
system(cmd,'-echo')
javaaddpath(pwd)
%# run it
javaMethodEDT('main','HelloWorld','')
You could try calling Java commands directly in MATLAB (as @DarkByte has shown), but at some point, you have to handle OpenGL events by implementing GLEventListener
interface methods: init, display, reshape, etc.. As you can't define Java classes directly in MATLAB, you might as well write the whole thing in Java as I did.
Some info from this link:
Little example:
import javax.swing.*
J = JFrame('Hi there')
L = JLabel('A Label');
P = J.getContentPane
P.add(L)
J.setSize(200,200);
J.setVisible(1)
And please check here for the MathWorks documentation.