gpt4 book ai didi

java - 在带有 Java 的 Matlab 中使用 OpenGL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:59 25 4
gpt4 key购买 nike

在 Matlab 中我有

import javax.media.opengl.GL;

我现在如何使用 OpenGL?谁能提供一个非常小的样本?

请注意:如果这不是在 Matlab 中,那么它会很容易。但问题具体涉及在 Matlab 中使用它。

最佳答案

MATLAB 在其静态类路径中提供了 JOGL 1.x 库,因此只需编译您的源代码(使用类路径中的那些 JAR 文件),然后在 MATLAB 中运行该程序。

下面是 Java 中的“hello world”OpenGL 示例。我展示了如何直接从 MATLAB 内部编译和运行它:

Hello World .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','')

screenshot

您可以尝试在 MATLAB 中直接调用 Java 命令(如@DarkByte 所示),但在某些时候,您必须通过实现 GLEventListener 接口(interface)方法来处理 OpenGL 事件:init、display、reshape、等等。因为你不能直接在 MATLAB 中定义 Java 类,你不妨像我一样用 Java 编写整个东西。

关于java - 在带有 Java 的 Matlab 中使用 OpenGL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com