RE: [clutter] How to mask two texture
Hi Neil, I have done like this but I am not getting masking in my program. Code Snippet:In the loading image Load_Image() { gchar **files; files = g_new (gchar*, 1); files[0] = g_build_filename (/home/rakeshk4/Development/Pictureflow/, Dummy_Alpha_Path.png, NULL); //path I am geeting from argument ClutterActor *actor = clutter_texture_new_from_file (path, NULL); CoglHandle alpha_mask_texture = cogl_texture_new_from_file (files[0],COGL_TEXTURE_NONE, COGL_PIXEL_FORMAT_ANY,error); Coglhandle material = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor)); cogl_material_set_layer (material, 1, alpha_mask_texture); cogl_material_set_layer_combine (material, 1, RGBA = MODULATE (PREVIOUS, TEXTURE), error); I am getting this warning meassage: cogl_material_set_layer_combine: assertion `cogl_is_material (handle)'failed I am using this sample. http://github.com/pmarti/clutter-tutorial/tree/50679e5eb5ebeb9cbfaab99ceacd9e85deabf3bb/examples/full_example Regards, RK Hi Rakesh Kumar rakesh.ku...@kpitcummins.com wrote: I have two texture one is rectangular texture and other one contains alpha texture that is non rectangular texture ,from this i would like to mask two texture and create new shape texture. How we can do this in clutter. You should be able to do this with a custom material on a ClutterTexture using multi-texturing. Assuming you have your alpha mask texture in a CoglHandle and your base texture in a ClutterTexture you can do something like this: ClutterActor *base_texture = ...; CoglHandle alpha_mask_texture = ...; CoglHandle material; /* Get the material from the Clutter texture */ material = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (base_texture)); /* Add the alpha mask as a second texture layer */ cogl_material_set_layer (material, 1, alpha_mask_texture); /* Set the combine function so that the base texture is modulated by the alpha component of the mask texture */ cogl_material_set_layer_combine (material, 1, RGBA = MODULATE (PREVIOUS, TEXTURE[A]), NULL); If you need picking to work as well then you would need to subclass ClutterTextue and override the pick method so that it draws a solid rectangle masked by the alpha texture in a similar way. You may want to take a look at Mutter¹ which does a similar thing to support shaped windows. - Neil ¹ http://ho.io/ck29 -- To unsubscribe send a mail to clutter+unsubscr...@o-hand.com
[clutter] clutter-gst: test-yuv-upload fails
Hi, I have checked out clutter-gst via git and run it on top of clutter 1.2.5 with an eglnative/gles backend. The test-yuv-upload fails, in contrast to the test-rgb-upload: $ ./test-yuv-upload (test-yuv-upload:1680): ClutterEGL-WARNING **: Stage of type 'ClutterStageEGL' do not support ClutterStage::set_title test-yuv-upload.c: [caps] video/x-raw-yuv, format=(fourcc)I420, framerate=(fraction)30/1 (test-yuv-upload:1680): Cogl-Driver-CRITICAL **: Invalid fragment shader. Link cannot proceed. Is anyone encountering similar issues, resp. is this a known issue for this backend? Thanks for any suggestions Phil
Re: [clutter] How to mask two texture
Rakesh Kumar wrote: Hi Neil, I have done like this but I am not getting masking in my program. Code Snippet:In the loading image Load_Image() { gchar **files; files = g_new (gchar*, 1); files[0] = g_build_filename (/home/rakeshk4/Development/Pictureflow/, Dummy_Alpha_Path.png, NULL); //path I am geeting from argument ClutterActor *actor = clutter_texture_new_from_file (path, NULL); CoglHandle alpha_mask_texture = cogl_texture_new_from_file (files[0],COGL_TEXTURE_NONE, COGL_PIXEL_FORMAT_ANY,error); Coglhandle material = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor)); cogl_material_set_layer (material, 1, alpha_mask_texture); cogl_material_set_layer_combine (material, 1, RGBA = MODULATE (PREVIOUS, TEXTURE), error); I am getting this warning meassage: cogl_material_set_layer_combine: assertion `cogl_is_material (handle)'failed I am using this sample. http://github.com/pmarti/clutter-tutorial/tree/50679e5eb5ebeb9cbfaab99ceacd9e85deabf3bb/examples/full_example Regards, RK Hi Rakesh Kumar rakesh.ku...@kpitcummins.com wrote: I have two texture one is rectangular texture and other one contains alpha texture that is non rectangular texture ,from this i would like to mask two texture and create new shape texture. How we can do this in clutter. You should be able to do this with a custom material on a ClutterTexture using multi-texturing. Assuming you have your alpha mask texture in a CoglHandle and your base texture in a ClutterTexture you can do something like this: ClutterActor *base_texture = ...; CoglHandle alpha_mask_texture = ...; CoglHandle material; /* Get the material from the Clutter texture */ material = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (base_texture)); maaterial = clutter_texture_get_cogl_material (CLUTTER_TEXTURE (base_texture)); that could fix the error, afaik... /* Add the alpha mask as a second texture layer */ cogl_material_set_layer (material, 1, alpha_mask_texture); /* Set the combine function so that the base texture is modulated by the alpha component of the mask texture */ cogl_material_set_layer_combine (material, 1, RGBA = MODULATE (PREVIOUS, TEXTURE[A]), NULL); If you need picking to work as well then you would need to subclass ClutterTextue and override the pick method so that it draws a solid rectangle masked by the alpha texture in a similar way. You may want to take a look at Mutter¹ which does a similar thing to support shaped windows. - Neil ¹ http://ho.io/ck29 -- To unsubscribe send a mail to clutter+unsubscr...@o-hand.com