【问题标题】:Want to write a screen capture recording app, where do I start? [closed]想写一个截屏录制应用程序,我从哪里开始? [关闭]
【发布时间】:2015-12-01 06:21:04
【问题描述】:

我想开始编写一个可以捕获屏幕内容或捕获特定全屏应用内容的应用程序,但我不知道从哪里开始。

理想情况下,这将使用 OpenGL 编写,但我不知道 OpenGL 捕获应用程序屏幕内容的能力。如果我可以使用 OpenGL 来捕捉,比如说魔兽世界,那就完美了。

【问题讨论】:

  • 你会使用什么语言?我不认为 OpenGL 有这些能力,它是一个 3D 图形 API,所以它渲染到屏幕上,而不是捕获。
  • 在谷歌上。你会发现问题,回来在这里问他们。

标签: opengl screen screen-capture


【解决方案1】:

OpenGL 捕获应用程序屏幕内容的能力

不存在。 OpenGL 是一种用于在屏幕上显示 的 API。只有一个函数可以从 OpenGL (glReadPixels) 中检索像素,并且它仅适用于调用 glReadPixels 的 OpenGL 上下文所绘制的内容;甚至对于除了屏幕外 FBO 之外的任何东西都是非常不可靠的,因为操作系统可以随时随意破坏、清除或以其他方式更改主窗口的帧缓冲区内容。

请注意,您可以在互联网上找到一些关于如何使用 OpenGL 进行屏幕截图的教程。而且它们都不适用于现代计算机系统,因为它们所依赖的未定义行为(屏幕上的所有窗口共享 GPU 扫描帧缓冲区的一个大的连续区域)不再适用于现代图形系统(任何窗口都拥有自己的独立一组帧缓冲区和屏幕上的图像是由这些合成的)。

捕获屏幕内容是一项高度依赖操作系统的任务,并且没有关于如何处理它的灵丹妙药。一些系统提供现成的屏幕捕获 API;但是,根据性能要求,这些屏幕捕获 API 可能不是最佳选择。一些捕获程序将一个 DLL 注入到每个进程中,以便在生成图像的源头进入渲染进程。并且一些屏幕捕获系统安装了一个自定义内核驱动程序来访问显卡的视频扫描缓冲区(通常映射到系统地址空间),绕过显卡的驱动程序来复制内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多