MATLAB поставляется с библиотеками JOGL 1.x, доступными по его статическому пути к классам, поэтому необходимо скомпилировать исходный код (с этими файлами JAR в пути к классам), а затем запустить программу внутри MATLAB.
Ниже приведен пример OpenGL "Привет, мир" в Java. Я покажу, как скомпилировать и запустить его прямо из MATLAB:
HelloWorld.java
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) {
}
}
HelloWorld_compile_run.m
%# 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','')
Вы можете попробовать вызывать Java-команды непосредственно в MATLAB (как показало @DarkByte), но в какой-то момент вы должны обрабатывать события OpenGL, реализуя GLEventListener
методы интерфейса: init, display, reshape и т. Д. Как вы Вы не можете определять Java-классы напрямую в MATLAB, вы можете написать все это на Java, как я.