@@ -264,7 +264,6 @@ class WindowSceneImpl : public WindowScene
264
264
Ptr<OgreBites::CameraMan> camman;
265
265
Ptr<Rectangle2D> bgplane;
266
266
267
- Ogre::RenderTarget* frameSrc;
268
267
Ogre::RenderTarget* depthRTT;
269
268
public:
270
269
WindowSceneImpl (Ptr<Application> app, const String& _title, const Size& sz, int flags)
@@ -324,18 +323,6 @@ class WindowSceneImpl : public WindowScene
324
323
}
325
324
326
325
rWin->addViewport (cam);
327
- frameSrc = rWin;
328
-
329
- if (flags & SCENE_RENDER_FLOAT)
330
- {
331
- // also render into an offscreen texture
332
- // currently this draws everything twice, but we spare the float->byte conversion for display
333
- TexturePtr tex = TextureManager::getSingleton ().createManual (
334
- title + " _rt" , RESOURCEGROUP_NAME, TEX_TYPE_2D, sz.width , sz.height , 0 , PF_FLOAT32_RGBA,
335
- TU_RENDERTARGET);
336
- frameSrc = tex->getBuffer ()->getRenderTarget ();
337
- frameSrc->addViewport (cam);
338
- }
339
326
}
340
327
341
328
void setBackground (InputArray image) CV_OVERRIDE
@@ -361,9 +348,9 @@ class WindowSceneImpl : public WindowScene
361
348
{
362
349
CompositorManager& cm = CompositorManager::getSingleton ();
363
350
// this should be applied to all owned render targets
364
- Ogre::RenderTarget* targets[] = {frameSrc, rWin, depthRTT};
351
+ Ogre::RenderTarget* targets[] = {rWin, depthRTT};
365
352
366
- for (int j = (frameSrc == rWin) ; j < 3 ; j++) // skip frameSrc if it is the same as rWin
353
+ for (int j = 0 ; j < 2 ; j++)
367
354
{
368
355
Ogre::RenderTarget* tgt = targets[j];
369
356
if (!tgt) continue ;
@@ -386,7 +373,7 @@ class WindowSceneImpl : public WindowScene
386
373
int mrtIndex) CV_OVERRIDE
387
374
{
388
375
CompositorManager& cm = CompositorManager::getSingleton ();
389
- CompositorChain* chain = cm.getCompositorChain (frameSrc ->getViewport (0 ));
376
+ CompositorChain* chain = cm.getCompositorChain (rWin ->getViewport (0 ));
390
377
CV_Assert (chain && " no active compositors" );
391
378
392
379
CompositorInstance* inst = chain->getCompositor (compname);
@@ -441,8 +428,6 @@ class WindowSceneImpl : public WindowScene
441
428
// BGRA as uchar
442
429
ColourValue _color = ColourValue (color[2 ], color[1 ], color[0 ], color[3 ]) / 255 ;
443
430
rWin->getViewport (0 )->setBackgroundColour (_color);
444
- if (frameSrc != rWin)
445
- frameSrc->getViewport (0 )->setBackgroundColour (_color);
446
431
}
447
432
448
433
void createEntity (const String& name, const String& meshname, InputArray tvec, InputArray rot) CV_OVERRIDE
@@ -594,17 +579,14 @@ class WindowSceneImpl : public WindowScene
594
579
595
580
void getScreenshot (OutputArray frame) CV_OVERRIDE
596
581
{
597
- PixelFormat src_type = frameSrc->suggestPixelFormat ();
598
- int dst_type = src_type == PF_BYTE_RGB ? CV_8UC3 : CV_32FC4;
599
-
600
- frame.create (frameSrc->getHeight (), frameSrc->getWidth (), dst_type);
582
+ frame.create (rWin->getHeight (), rWin->getWidth (), CV_8UC3);
601
583
602
584
Mat out = frame.getMat ();
603
- PixelBox pb (frameSrc ->getWidth (), frameSrc ->getHeight (), 1 , src_type , out.ptr ());
604
- frameSrc ->copyContentsToMemory (pb, pb);
585
+ PixelBox pb (rWin ->getWidth (), rWin ->getHeight (), 1 , PF_BYTE_RGB , out.ptr ());
586
+ rWin ->copyContentsToMemory (pb, pb);
605
587
606
588
// convert to OpenCV channel order
607
- cvtColor (out, out, dst_type == CV_8UC3 ? COLOR_RGB2BGR : COLOR_RGBA2BGRA );
589
+ cvtColor (out, out, COLOR_RGB2BGR);
608
590
}
609
591
610
592
void getDepth (OutputArray depth) CV_OVERRIDE
@@ -615,8 +597,8 @@ class WindowSceneImpl : public WindowScene
615
597
// render into an offscreen texture
616
598
// currently this draws everything twice as OGRE lacks depth texture attachments
617
599
TexturePtr tex = TextureManager::getSingleton ().createManual (
618
- title + " _Depth" , RESOURCEGROUP_NAME, TEX_TYPE_2D, frameSrc ->getWidth (),
619
- frameSrc ->getHeight (), 0 , PF_DEPTH, TU_RENDERTARGET);
600
+ title + " _Depth" , RESOURCEGROUP_NAME, TEX_TYPE_2D, rWin ->getWidth (),
601
+ rWin ->getHeight (), 0 , PF_DEPTH, TU_RENDERTARGET);
620
602
depthRTT = tex->getBuffer ()->getRenderTarget ();
621
603
depthRTT->addViewport (cam);
622
604
depthRTT->setAutoUpdated (false ); // only update when requested
0 commit comments