我有一个WPF应用程序,屏幕的一部分显示了一个需要在3D中动态呈现的对象,可能是20FPS。据我所知,WPF应用程序通常会使用DirectX进行3D渲染。(我也知道世界粮食计划署有一个简化的3D API,但我不认为这在我的情况下是可行的,因为我有太多的三角形要渲染。)在我的例子中,我想使用OpenGL,因为整个应用程序很有可能会被移植到非Windows机器上,而我不想重写3D代码。
我看到已经有一些尝试创建一个OpenGL可以直接渲染的WPF控件,但它们似乎都太粗糙/太危险,不能使用。
作为一种更安全的方法,我认为我可以使用FBO和OpenGL来渲染屏幕外的帧,然后获取位图并将它们实时传递给WPF,作为常规的2D图像。
我的问题是关于速度。您预计此计划中会出现破坏交易的瓶颈吗?我假设FBO渲染将与OpenGL端的直接窗口渲染一样快?我希望从渲染的OpenGL图像(FBO)中提取位图应该很快?我不太确定是否将这些图像交给世界粮食计划署,并看到它们以20 FPS的速度更新。
你有没有具体的经验可以帮助我决定这是不是一个合理的方法?
发布于 2013-01-11 18:06:20
我想使用OpenGL,因为很有可能整个应用程序会被移植到非Windows机上
但这意味着你必须重写你的整个WPF应用程序,因为这个框架不是跨平台的。所以在这种情况下,OpenGL部分在这里只会是次要的问题。我认为你应该重新考虑整个UI tech.For示例,我会使用Qt SDK,因为它是真正的跨平台,你可以随意将它与DirectX和OpenGL连接。但是,如果你打算在Windows上继续使用WPF并使用OpenGL,那就使用C# OpenGL wrapper吧。是的,你会得到一些性能开销,因为这是一个像Java (JOGL,LWJGL)那样的wrapper.Just,像MineCraft这样的游戏最初就是用这些API编写的,并且工作得很好。另一种更具挑战性的方法是使用WPF COM interop并调用一些直接从WPF中包装OpenGL渲染器的C++应用程序,甚至可以使用unsafe mode来获得与possible.Never本人尝试的一样低的级别,但这可能会让你得到一个更好的performance.But,这实际上是一项大量的工作。最后,我建议你使用Windows,因为它与naturally.If有最好的集成,如果你的应用设计得很好,那么以后把它连接到OpenGL后端就不成问题了。
https://stackoverflow.com/questions/14270149
复制相似问题