@@ -1216,7 +1216,6 @@ void RendererSystem::screenshot(const atcg::ref_ptr<Scene>& scene,
12161216{
12171217 ATCG_ASSERT (impl->context ->isCurrent (), " Context of Renderer not current." );
12181218
1219- atcg::ref_ptr<PerspectiveCamera> cam = std::dynamic_pointer_cast<PerspectiveCamera>(camera);
12201219 atcg::ref_ptr<Framebuffer> screenshot_buffer = atcg::make_ref<Framebuffer>((int )width, (int )height);
12211220 screenshot_buffer->attachColor ();
12221221 screenshot_buffer->attachDepth ();
@@ -1226,7 +1225,7 @@ void RendererSystem::screenshot(const atcg::ref_ptr<Scene>& scene,
12261225 clear ();
12271226 setViewport (0 , 0 , width, height);
12281227 atcg::Dictionary context;
1229- context.setValue (" camera" , cam );
1228+ context.setValue (" camera" , camera );
12301229 scene->draw (context);
12311230 useScreenBuffer ();
12321231 setDefaultViewport ();
@@ -1243,8 +1242,7 @@ RendererSystem::screenshot(const atcg::ref_ptr<Scene>& scene, const atcg::ref_pt
12431242{
12441243 ATCG_ASSERT (impl->context ->isCurrent (), " Context of Renderer not current." );
12451244
1246- atcg::ref_ptr<PerspectiveCamera> cam = std::dynamic_pointer_cast<PerspectiveCamera>(camera);
1247- float height = (float )width / cam->getAspectRatio ();
1245+ float height = (float )width / camera->getIntrinsics ().aspectRatio ();
12481246 atcg::ref_ptr<Framebuffer> screenshot_buffer = atcg::make_ref<Framebuffer>((int )width, (int )height);
12491247 screenshot_buffer->attachColor ();
12501248 screenshot_buffer->attachDepth ();
@@ -1254,7 +1252,7 @@ RendererSystem::screenshot(const atcg::ref_ptr<Scene>& scene, const atcg::ref_pt
12541252 clear ();
12551253 setViewport (0 , 0 , width, height);
12561254 atcg::Dictionary context;
1257- context.setValue (" camera" , cam );
1255+ context.setValue (" camera" , camera );
12581256 scene->draw (context);
12591257 useScreenBuffer ();
12601258 setDefaultViewport ();
0 commit comments