标题几乎说明了。我正在考虑制作一个简单的视频编辑器,我不确定各种效果和过滤器等的“后勤”。假设我希望外部程序可以对图像应用一些效果。是否必须是必须执行的程序,或者它只是视频编辑器可以解析的一组OpenGL指令,并且基本上“传递”到OpenGL。从技术上讲,这将是一个程序,但它似乎比制作一个完整的二级程序只是为了应用效果更优雅和标准化。也许有更好的方法?
编辑:谢谢你的回答。以下是一个跟进:其他视频编辑如何实现这一点?我问的原因是因为上面的答案似乎相当消极,所以我想知道专业应用程序是如何 完成的。
答案 0 :(得分:3)
假设我希望外部程序可以对图像应用一些效果。是否必须是必须执行的程序,或者它只是视频编辑器可以解析的一组OpenGL指令,并且基本上“传递”到OpenGL。
任何一件事都有效。然而,在OpenGL标准本身中,没有像“OpenGL指令”或“操作码”这样的东西。但至少在具有间接GLX的基于X11的系统中,这是可能的,因为GLX实际上定义了操作码。如果是间接的话,多个X客户端可以在相同的上下文中运行。不幸的是,大多数时候你都没有这个选项,因为你可能想要一个直接上下文,因为你可能想要OpenGL3(并非所有操作都有操作码定义,这使得OpenGL-3间接不可能),或者因为你'不使用GLX。
所以接下来的选择是,你为其他进程提供了一些OpenGL的命令/解释器提示。如果你很懒,我建议你在你的程序中嵌入一个Python解释器,以及Python OpenGL绑定。这些操作在当前活动的任何上下文中运行,允许其他程序实际发送一些Python脚本来完成它的工作。
最后但并非最不重要的是,你可以通过一些RPC接口提供OpenGL。
或者你提供了一些插件系统,你可以在其中加载一些DLL,它可以用来实现契约。
答案 1 :(得分:3)
它必须是必须执行的程序,还是只是一组视频编辑器可以解析的OpenGL指令,并且基本上是“传递”到OpenGL。
有几种方法可以解决这个问题(“使视频编辑器能够创建自定义效果”)。
除此之外,没有“语言无关”的方式可以生效。您必须使用现有语言使效果插件与您的应用程序交互,或者您必须使用自己的“语言”来描述效果。唯一与语言无关的方法是聘请程序员并告诉他你想要什么样的效果。但话说回来,这需要自然语言。
答案 2 :(得分:1)
当然,但这基本上相当于你创建自己的语言。您可以接受OpenGL"说明"从用户通过一些文本界面(或者如果你想以某种方式将某些东西放在一起作为GUI),然后解析那些"指令",并且底层实现将以您的应用程序编写的任何语言执行这些指令
答案 3 :(得分:0)
简短的回答是否定的。你正在寻找的是一个HCI人的梦想DSL,无论基础技术如何,都会描述演示。
答案 4 :(得分:0)
可能不是你想要的,你可能想看看GLSL。 GLSL是一种类似C语言,由图形卡驱动程序编译成本机"图形汇编语言"。