我正在创建一个REST API
以根据用户输入和提供的动画类型动态生成视频。因此,我正在为此使用处理2.2.1。
我想使用OPENGL
生成3D动画。但是OPENGL
需要Window对象。由于我在后台使用处理来生成帧,因此如何使用OPENGL
处理来生成动画帧,而无需交互方式而不显示窗口。
我的示例代码
import com.hamoid.VideoExport;
import processing.core.*;
public class CircleSketch extends PApplet {
private VideoExport videoExport;
public void setup() {
size(400, 400,OPENGL);
videoExport = new VideoExport(this, "F:/work/tmp.mp4");
background(0);
}
public void draw() {
background(0);
fill(200);
rotateX(radians(50));
rectMode(CENTER);
rect(width/2,height/2, 100, 100);
videoExport.saveFrame();
}
}
DisplayFrame
类public class DisplayFrame extends javax.swing.JFrame {
public DisplayFrame(){
this.setSize(600, 600); //The window Dimensions
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.JPanel panel = new javax.swing.JPanel();
panel.setBounds(20, 20, 600, 600);
processing.core.PApplet sketch = new CircleSketch();
panel.add(sketch);
this.add(panel);
this.setVisible(false);
sketch.init(); //this is the function used to start the execution of the sketch
}
public static void main(String[] args) {
new DisplayFrame().setVisible(false);
}
}
有什么建议吗???
最佳答案
如何在不显示窗口的情况下使用OPENGL进行处理以生成没有交互方式的动画帧。
简而言之:鉴于当前的OpenGL驱动程序模型,您就无法做到(只要您想使用GPU进行渲染)。期间就是这样。
如果您可以忍受软件渲染(缓慢),则可以使用OSMesa。同样,在可预见的将来,驱动程序模型也应进行更改,从而允许在无头环境中使用OpenGL。在此之前,您需要一个在图形环境上具有某种形式的窗口,该窗口实际上会主动提供显示输出(因此,不足以启动X11服务器并将其作为背景)。