Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用opengl创建视频处理_Java_Api_Processing_Jmf - Fatal编程技术网

Java 使用opengl创建视频处理

Java 使用opengl创建视频处理,java,api,processing,jmf,Java,Api,Processing,Jmf,我正在创建一个restapi,根据用户输入和提供的动画类型动态生成视频。因此,我使用processing 2.2.1来实现这一点。 我想使用OPENGL生成三维动画。但是OPENGL需要窗口对象。由于我在后台使用processing来生成帧,因此如何使用processing withOPENGL来生成动画帧,而不使用交互方式,而不显示窗口 我的示例代码 import com.hamoid.VideoExport; import processing.core.*; public class

我正在创建一个
restapi
,根据用户输入和提供的动画类型动态生成视频。因此,我使用processing 2.2.1来实现这一点。 我想使用
OPENGL
生成三维动画。但是
OPENGL
需要窗口对象。由于我在后台使用processing来生成帧,因此如何使用processing with
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
Class

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进行渲染)。就是这样


如果您可以使用软件渲染(慢速),那么就有了。此外,在可预见的未来,驱动程序模型也将发生变化,从而允许在无头环境中使用OpenGL。在此之前,您需要图形环境中的某种窗口,该窗口实际上会主动提供显示输出(因此,启动X11服务器并对其进行后台处理是不够的).

OpenGL与处理无关。也许情况正好相反。但在我看来,你应该问与处理框架相关的问题,而不是OpenGL。此外,你的代码与OpenGL无关。非常感谢你的回答。那么,如何在linux服务器环境中使用OPENGL运行处理呢。我是否需要安装KDE或X11服务器之类的桌面环境就可以了。这是一个非常准确的答案(+1)@SumitGupta我还将使用软件渲染器(可能是Java3D?)进行测试,或者将3d坐标转换为2d并在2d中绘制?请注意,默认情况下,PApplets将创建一个窗口(稍后可以隐藏)。如果这是一个问题,考虑使用软件3D的纯javalibrary@SumitGupta:您需要至少为您的GPU安装一个X11服务器和驱动程序。根据您的发行版,普通用户可能被允许或不被允许启动X服务器。这里描述了如何修复它:;一旦普通用户可以启动X服务器,您就可以使用
xinit--
启动在X服务器中运行的程序。如果您有多个程序需要X,您可能需要启动某种会话环境(DJB的daemontools适用于此)。@SumitGupta:请记住,X服务器提供了另一个攻击面,因此,如果您的internet服务遭到黑客攻击,它可能会从X服务器反弹以提升其权限。所以你应该有安全意识。