Я пытался заставить работать внеэкранный рендеринг, используя Java3D 1.5.2. В моем исходном коде я пытался присоединить расширенный Canvas3D
, который будет выполнять закадровый рендеринг, к SimpleUniverse
, но это нарушит рендеринг:
62. // FOR SOME REASON THIS BREAKS RENDERING
63. universe.getViewer().getView().addCanvas3D(canvas);
Полный исходный код слишком велик для вставки в StackOverflow, поэтому я сделал его доступным через Pastie по здесь.
Строка 63 была закомментирована, и обычный Canvas3D выполняет рендеринг на экране. Он отобразит куб и отобразит его в формате JFrame
. Однако, если вы удалите комментарий, рендеринг за пределами экрана приведет к тому, что экранный рендеринг не будет отображаться. Также закадровый рендеринг вернет «большое черное ничто» BufferedImage
.
Я хотел бы знать, как заставить работать рендеринг вне экрана, то есть отображать сцену повернутого куба в буферизованное изображение. Я просматривал предоставленный Java3D пример кода для рендеринга вне экрана, и они делают это также (за исключением того, что они используют объект Raster
для рендеринга внеэкранного буфера обратно в экранное окно).