Hi, Mathijs is right; because your images are so large you are probably exceeding your GPUs maximum texture size and so Clutter *tries* to handle that by automatically splitting your texture into smaller "slices" which your GPU can handle. The problem you are seeing is that sliced textures have some limitations compared to regular, unsliced textures because we have to make multiple draw calls per primitive to draw each of the slices and one of the things we don't currently support with sliced textures is multi-texturing.
Multi-texturing is where you try to combine multiple textures when you draw some primitive and this is done by added multiple layers to the CoglMaterial being used to draw. It's very likely that you don't really need the full resolution of such images and so you may be wasting a lot of memory by loading the full images and also not using your GPU texture cache efficiently. If possible I would recommend that you load your images using the gdk_pixbuf_loader API and in a "size-prepared" signal handler check the image size and then if necessary call gdk_pixbuf_loader_set_size to ensure that you don't load images larger than the largest size you plan to display at. Once the image is loaded you can then give the data to Clutter using clutter_texture_set_from_data (). Hopefully this way you can avoid using sliced textures at all. At some point I think it would be good for Clutter to provide an integrated image loading API that would simplify this kind of problem since it does come up quite often. kind regards, - Robert Excerpts from Mathijs Dumon's message of Sat Feb 12 11:11:22 +0000 2011: > I think the error is related to the size of your jpg. Graphic cards can only > store textures up to a certain maximum size (e.g. 256x256 px). If your > texture/image is larger, it will be sliced into smaller subsets that fit > into that maximum size (effectively making multiple textures in memory) > > I'm assuming the cogl back-end takes care of rendering these slices > correctly one next to another. However due to the nature of the operation it > is rather hard to do multi-texturing (because the other textures will be > sliced differently if they have different sizes, and will only partly > overlap with the other layers etc. etc.). > > So as long as you have defined just one texture for your actor (which > usually is the case) there's no problem, when you'd like an actor to have > one texture overlain by another it won't work with bigger textures. The > exact size would be hardware-dependent. > > Again, this is what I think the error is about, please correct me if I'm > wrong. > > best regards, > Mathijs -- Robert Bragg, Intel Open Source Technology Center _______________________________________________ clutter-app-devel-list mailing list [email protected] http://lists.clutter-project.org/listinfo/clutter-app-devel-list
