我一直在努力使屏幕渲染工作,使用Java3D 1.5.2。在我source code我一直在试图附加扩展Canvas3D
,会做离屏渲染SimpleUniverse
,但是这样做会破坏渲染:为什么我的屏幕渲染Canvas3D不起作用?
62. // FOR SOME REASON THIS BREAKS RENDERING
63. universe.getViewer().getView().addCanvas3D(canvas);
完整的源代码是有点太大,粘贴StackOverflow,所以我通过Pastie通过here提供。
第63行已被注释掉,并有普通的Canvas3D在屏幕上呈现。它将渲染一个立方体并将其显示在JFrame
中。但是,如果您删除了注释,那么屏幕外渲染将导致屏幕上的不渲染。此外,屏幕渲染将返回一个“大黑什么都没有”BufferedImage
。
我想知道如何进行屏幕外渲染工作,即将旋转的多维数据集的场景渲染为缓冲图像。我一直在研究Java3D提供的用于离屏渲染的示例代码,并且它们也是这样做的(除了它们使用Raster
对象来将屏幕外缓冲区渲染回屏幕窗口)。
甜,它的作品!顺便问一句,你到底需要做些什么才能让程序退出。它仍然在运行,即使渲染完成,就好像一些资源仍在运行一样,我不能把手指放在它正在做的地方。 (我打电话给universe.cleanup(),但似乎不够)。那之后我会接受答案。 – Spoike 2009-09-03 07:07:35
我会尝试.dispose()所有框架。如果这不起作用,然后调用System.exit(0),这会杀死jvm。如果你需要jvm继续运行,那么需要更多的研究:) – Melv 2009-09-03 07:41:33
是的,我想通过使用System.exit(0),但我不需要任何更优雅的东西,所以没关系。谢谢。 – Spoike 2009-09-03 07:42:46