代码之家  ›  专栏  ›  技术社区  ›  Spoike Otávio Décio

为什么我的屏幕外渲染Canvas3D不工作?

  •  0
  • Spoike Otávio Décio  · 技术社区  · 15 年前

    我一直在尝试使屏幕外渲染工作,使用 Java3D 1.5.2 . 在我的 source code 我一直在尝试附加一个扩展 Canvas3D 这将完成屏幕外渲染 SimpleUniverse ,但这样做会破坏渲染:

    62.  // FOR SOME REASON THIS BREAKS RENDERING
    63.  universe.getViewer().getView().addCanvas3D(canvas);
    

    完整的源代码太大了,无法粘贴到stackoverflow上,因此我通过pastie over使其可用。 here .

    第63行被注释掉了,它有普通的canvas3d做屏幕渲染。它将呈现多维数据集并将其显示在 JFrame . 但是,如果删除注释,屏幕外渲染将导致屏幕上的渲染不进行。此外,屏幕外渲染将返回“大黑无” BufferedImage .

    我想知道如何使屏幕外渲染工作,即将旋转立方体的场景渲染为缓冲图像。我一直在研究Java3D为非屏幕渲染提供的示例代码,它们也这样做(除了使用 Raster 对象以将屏幕外缓冲区呈现回屏幕上的窗口)。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Melv    15 年前

    可能是屏幕3D的物理尺寸出错了。该值应该是以米为单位的物理屏幕大小。您可以使用以下方法进行测试:

    screen3D.setPhysicalScreenWidth(0.0254/90.0 * destWidth);
    screen3D.setPhysicalScreenHeight(0.0254/90.0 * destHeight);
    

    这些值来自screen3d javadoc的顶部。有问题的行与上面的代码一起工作,至少对我来说是这样的:)

    设置错误的物理尺寸也可能会更改渲染图像的纵横比。

    推荐文章