在3D引擎中显示普通应用程序

时间:2013-02-03 00:01:51

标签: graphics

所以我一直在想象这个3D环境,在那里我可以打开我的应用程序并在那里做些什么。我在想这可能吗?我注意到谷歌搜索它比我想象的更难。我确实来过http://awesomium.com/

我确实有一个计算机图形课,我用OpenGL3创建了自己的3D世界,所以我知道我的问题可能有点“在那里”。但话又说回来,拖放网络界面也是“在那里”以及最初的几种互联网技术。

所以我的问题是:是否可以在3D环境中打开应用程序?是否有3D引擎可以做到这一点?如果没有3D引擎,那么我需要采取哪些开始步骤才能对其进行编程(例如,即使它仅用于像记事本这样的一个程序)。

我很好奇。我注意到,当显示3D全息投影将成为可能时,这将是一个非常相关的问题。现在我只是好奇,我想编写自己的空间,在树附近打开一些应用程序。我知道编程和OpenGL的基础知识,但我无法弄清楚如何组合它。

1 个答案:

答案 0 :(得分:2)

有可能。您需要捕获应用程序窗口的输出并将其呈现给纹理。要做到这一点,你需要钩子,例如拦截WM_PAINT窗口消息并挂钩代码,捕获窗口上绘制的内容。

如果要捕获使用DirectX或OpenGL进行渲染的窗口的输出,则需要(再次使用挂钩)拦截翻转后缓冲区并显示输出的方法。这很难实现,因为您需要知道每个应用程序的方法是什么。

你的问题的答案应该是这样的,但正如你所看到的,你的问题没有一个通用的解决方案。

有关挂钩的更多信息:How can I hook Windows functions in C/C++?