@@ -31,11 +31,28 @@ WindowScene::~WindowScene() {}
31
31
32
32
void _createTexture (const String& name, Mat image)
33
33
{
34
+ PixelFormat format;
35
+ switch (image.type ())
36
+ {
37
+ case CV_8UC4:
38
+ format = PF_BYTE_BGRA;
39
+ break ;
40
+ case CV_8UC3:
41
+ format = PF_BYTE_BGR;
42
+ break ;
43
+ case CV_8UC1:
44
+ format = PF_BYTE_L;
45
+ break ;
46
+ default :
47
+ CV_Error (Error::StsBadArg, " currently only CV_8UC1, CV_8UC3, CV_8UC4 textures are supported" );
48
+ break ;
49
+ }
50
+
34
51
TextureManager& texMgr = TextureManager::getSingleton ();
35
52
TexturePtr tex = texMgr.getByName (name, RESOURCEGROUP_NAME);
36
53
37
54
Image im;
38
- im.loadDynamicImage (image.ptr (), image.cols , image.rows , 1 , PF_BYTE_BGR );
55
+ im.loadDynamicImage (image.ptr (), image.cols , image.rows , 1 , format );
39
56
40
57
if (tex)
41
58
{
@@ -323,7 +340,7 @@ class WindowSceneImpl : public WindowScene
323
340
324
341
void setBackground (InputArray image)
325
342
{
326
- CV_Assert (image. type () == CV_8UC3, bgplane);
343
+ CV_Assert (bgplane);
327
344
328
345
String name = sceneMgr->getName () + " _Background" ;
329
346
@@ -770,5 +787,13 @@ void setMaterialProperty(const String& name, const String& prop, const Scalar& v
770
787
if (!set)
771
788
CV_Error_ (Error::StsBadArg, (" shader parameter named '%s' not found" , prop.c_str ()));
772
789
}
790
+
791
+ void updateTexture (const String& name, InputArray image)
792
+ {
793
+ CV_Assert (_app);
794
+ TexturePtr tex = TextureManager::getSingleton ().getByName (name, RESOURCEGROUP_NAME);
795
+ CV_Assert (tex);
796
+ _createTexture (name, image.getMat ());
797
+ }
773
798
}
774
799
}
0 commit comments