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.
If you try to use hardware-accelerated graphics when it is not supported, MATLAB returns a warning message and uses software OpenGL instead.
You can access existing Java classes to use in the MATLAB workspace. For example, use built-in class packages, such as java. util , which are included in the Java language.
You must have MATLAB Compiler SDK installed. Your Java environment must be properly configured. For details, see Configure Your Environment for Generating Java Packages. Your end users must have MATLAB or MATLAB Runtime installed to run compiled MATLAB code.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With