捕获 child 进程的 OpenGL 输出?
Capture OpenGL output of child process?
是否有可能捕获 child 进程的 opengl 输出?
Child 不应该有不同的 window。输出应由 parent 捕获和显示。
我知道我可以创建一个图层,我的 child 可以使用它在我的 parent 应用程序中创建 opengl 回调。并通过套接字或管道发送数据。
编辑:
我编写主要和 child 应用程序。
好的,这是我认为可以如何完成的简要说明。这完全未经测试,所以 YMMV。
在父进程中创建您的 window。根据 this page,您需要使用 CS_OWNDC
样式创建它,这意味着它具有相同的 HDC
永久关联。
启动您的子进程。您可以将 HWND
作为命令行参数传递给它,转换为 hex-ascii,或者您可以设计一些其他方法。
在子进程中,调用GetDC
取回父进程的window的HDC
传给wglCreateContext
(我猜你对做那种事了如指掌)。
在子进程中画画画画
在退出子进程之前,确保调用 ReleaseDC
释放由 GetDC
分配的所有资源。
这应该 工作。例如,我知道 Chrome 为每个浏览器选项卡使用一个单独的进程(这样如果渲染到任何特定选项卡的代码崩溃,它只会影响该选项卡)。
此外,如果您只是因为想重新加载一些(不同的)DLL 而想跳过所有这些步骤,也许您正在寻找 LoadLibrary
and GetProcAddress
。嗯,也许我不需要写那么多:)
是否有可能捕获 child 进程的 opengl 输出?
Child 不应该有不同的 window。输出应由 parent 捕获和显示。
我知道我可以创建一个图层,我的 child 可以使用它在我的 parent 应用程序中创建 opengl 回调。并通过套接字或管道发送数据。
编辑: 我编写主要和 child 应用程序。
好的,这是我认为可以如何完成的简要说明。这完全未经测试,所以 YMMV。
在父进程中创建您的 window。根据 this page,您需要使用
CS_OWNDC
样式创建它,这意味着它具有相同的HDC
永久关联。启动您的子进程。您可以将
HWND
作为命令行参数传递给它,转换为 hex-ascii,或者您可以设计一些其他方法。在子进程中,调用
GetDC
取回父进程的window的HDC
传给wglCreateContext
(我猜你对做那种事了如指掌)。在子进程中画画画画
在退出子进程之前,确保调用
ReleaseDC
释放由GetDC
分配的所有资源。
这应该 工作。例如,我知道 Chrome 为每个浏览器选项卡使用一个单独的进程(这样如果渲染到任何特定选项卡的代码崩溃,它只会影响该选项卡)。
此外,如果您只是因为想重新加载一些(不同的)DLL 而想跳过所有这些步骤,也许您正在寻找 LoadLibrary
and GetProcAddress
。嗯,也许我不需要写那么多:)