I am not very concerned about disk usage. I am more concerned about RAM. Will 
be there any advantages using this kind of compression? If yes how can I 
compress and then load the data in a osg::Image?

I am asking because I tried to do the compression with PVR (using 
PVRTexToolGUI) but I was not able to load it in a osg::Image.

Thank you.

John


gwaldron wrote:
> Your only further recourse would be to take Luc's advice and DXT-compress the 
> data on disk (using NVTT e.g.); that will give you 4:1 savings.
> 
> Ref:
> http://en.wikipedia.org/wiki/S3_Texture_Compression#S3TC_Format_Comparison 
> (http://en.wikipedia.org/wiki/S3_Texture_Compression#S3TC_Format_Comparison) 
> 
> 
> 
> Glenn Waldron / @glennwaldron
> 
> 
> On Tue, Nov 19, 2013 at 9:51 AM, John Moore < ()> wrote:
> 
> >  Memory usage is for the entire app.
> > However memory usage of the same scene if I don’t load the texture is 20 
> > MB. So I can safely assume the rest is consumed by the fact the textures 
> > are applied to the sphere.
> > 
> > 
> > gwaldron wrote:
> > 
> > > 110MB -- CPU or GPU memory? For the entire app or just your textures?
> > > 
> > > Quick math:
> > > 2 * 4096 * 2048 * 4 * 1.3 = 87MB.
> > > (4 = RGBA, 1.3 = mipmaps)
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Glenn Waldron / @glennwaldron
> > > 
> > > 
> > > 
> > 
> > 
> > > On Tue, Nov 19, 2013 at 9:18 AM, John Moore < ()> wrote:
> > > 
> > > 
> > > >  Thank you Gwaldron,
> > > > that line of code saved me 40MB. Better than nothing. Now the memory 
> > > > usage is around 110 MB.
> > > > 
> > > > The format of the image is JPG.
> > > > I tried to use PVR but I can't load the image.
> > > > 
> > > > This is the complete function (updated with your suggestion) that I use 
> > > > to create a sphere with 2 textures.
> > > > Then I use a shader to cross fade between the two textures.... that's 
> > > > why I need to have both of them in memory.
> > > > 
> > > > 
> > > > Code:
> > > > 
> > > > - (osg::ref_ptr<osg::Geode>)createSphereWithTodayImage:(NSString 
> > > > *)todayTextName pastImage:(NSString *)pastTextName andRay:(CGFloat)ray
> > > > {
> > > >     osg::ref_ptr<osg::Geode> sphere = new osg::Geode();
> > > >     sphere->addDrawable(new osg::ShapeDrawable(new 
> > > > osg::Sphere(osg::Vec3(), ray)));
> > > >     sphere->setName("BubbleNode");
> > > > 
> > > >     // load image for texture
> > > >     osg::ref_ptr<osg::Image> todayImage = 
> > > > osgDB::readImageFile(todayTextName.UTF8String);
> > > >     osg::ref_ptr<osg::Image> pastImage = 
> > > > osgDB::readImageFile(pastTextName.UTF8String);
> > > > 
> > > >     if (!todayImage || !pastImage)
> > > >     {
> > > >         std::cout << "Couldn't load texture." << std::endl;
> > > >     }
> > > >     else
> > > >     {
> > > > 
> > > 
> > 
> > 
> > > 
> > > >         osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
> > > >         texture->setDataVariance(osg::Object::STATIC);
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > >         texture->setFilter(osg::Texture::MIN_FILTER, 
> > > > osg::Texture::LINEAR);
> > > >         texture->setFilter(osg::Texture::MAG_FILTER, 
> > > > osg::Texture::LINEAR);
> > > >         texture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP);
> > > >         texture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP);
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > >         texture->setImage(todayImage.release());
> > > >         texture->setUnRefImageDataAfterApply(true);
> > > >         
> > > > sphere->getOrCreateStateSet()->setTextureAttributeAndModes(0,texture.get());
> > > > 
> > > >         osg::ref_ptr<osg::Texture2D> texture2 = new osg::Texture2D;
> > > >         texture2->setDataVariance(osg::Object::STATIC);
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > >         texture2->setFilter(osg::Texture::MIN_FILTER, 
> > > > osg::Texture::LINEAR);
> > > >         texture2->setFilter(osg::Texture::MAG_FILTER, 
> > > > osg::Texture::LINEAR);
> > > >         texture2->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP);
> > > >         texture2->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP);
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > >         texture2->setImage(pastImage.release());
> > > >         texture->setUnRefImageDataAfterApply(true);
> > > >         
> > > > sphere->getOrCreateStateSet()->setTextureAttributeAndModes(1,texture2.get());
> > > > 
> > > >     }
> > > >     return sphere;
> > > > }
> > > > 
> > > > 
> > > > 
> > > > and then I call this to add the sphere
> > > > 
> > > > Code:
> > > > 
> > > > osg::ref_ptr<osg::Geode> sphere = [self 
> > > > createSphereWithTodayImage:"pathofimage1.jpg" 
> > > > pastImage:"pathofimage2.jpg" andRay:1.0f];
> > > > _root->addChild(sphere.get());
> > > > _root->setDataVariance( osg::Object::DYNAMIC);
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > gwaldron wrote:
> > > > 
> > > > 
> > > > > What's the data type of your image? Show the code where you allocate 
> > > > > the image data.
> > > > > 
> > > > > You can also call this, which will free the CPU memory once the 
> > > > > texture gets to the GPU:
> > > > > 
> > > > >    texture->setUnRefImageDataAfterApply(true);
> > > > > 
> > > > > 
> > > > > Glenn Waldron / @glennwaldron
> > > > > 
> > > > > 
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > 
> > > > > On Tue, Nov 19, 2013 at 8:11 AM, John Moore < ()> wrote:
> > > > > 
> > > > > 
> > > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > > 
> > > > > 
> > > > > >  Hi,
> > > > > > 
> > > > > > In my app I am using 2 textures of size 4096x2048.
> > > > > > I have a serious problem of memory usage.
> > > > > > 
> > > > > > 
> > > > > > Code:
> > > > > > 
> > > > > > osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D;
> > > > > >         texture->setDataVariance(osg::Object::STATIC);
> > > > > >         texture->setFilter(osg::Texture::MIN_FILTER, 
> > > > > > osg::Texture::LINEAR_MIPMAP_LINEAR);
> > > > > >         texture->setFilter(osg::Texture::MAG_FILTER, 
> > > > > > osg::Texture::LINEAR);
> > > > > >         texture->setWrap(osg::Texture::WRAP_S, osg::Texture::CLAMP);
> > > > > >         texture->setWrap(osg::Texture::WRAP_T, osg::Texture::CLAMP);
> > > > > >         texture->setImage(image.release());
> > > > > >         
> > > > > > sphere->getOrCreateStateSet()->setTextureAttributeAndModes(0,texture.get());
> > > > > > 
> > > > > >         osg::ref_ptr<osg::Texture2D> texture2 = new osg::Texture2D;
> > > > > >         texture2->setDataVariance(osg::Object::STATIC);
> > > > > >         texture2->setFilter(osg::Texture::MIN_FILTER, 
> > > > > > osg::Texture::LINEAR_MIPMAP_LINEAR);
> > > > > >         texture2->setFilter(osg::Texture::MAG_FILTER, 
> > > > > > osg::Texture:: LINEAR);
> > > > > >         texture2->setWrap(osg::Texture::WRAP_S, 
> > > > > > osg::Texture::CLAMP);
> > > > > >         texture2->setWrap(osg::Texture::WRAP_T, 
> > > > > > osg::Texture::CLAMP);
> > > > > >         texture2->setImage(image2.release());
> > > > > >         
> > > > > > sphere->getOrCreateStateSet()->setTextureAttributeAndModes(1,texture2.get());
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > using this code my app jumps from 20 MB of memory to 250 MB of 
> > > > > > memory usage
> > > > > > 
> > > > > > Since I am developing on mobile platform this is a huge waste of 
> > > > > > memory.
> > > > > > 
> > > > > > I partially solved the problem by changing the MIN_FILTER from 
> > > > > > LINEAR_MIPMAP_LINEAR to LINEAR
> > > > > > Now the memory usage is 150MB
> > > > > > 
> > > > > > It's still a lot!
> > > > > > 
> > > > > > Do you know a way to optimize the memory usage of these 2 textures?
> > > > > > 
> > > > > > Thank you,
> > > > > > Have a nice day (or night :) ),
> > > > > > 
> > > > > > John
> > > > > > 
> > > > > > ------------------
> > > > > > Read this topic online here:
> > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > 
> > 
> > 
> > 
> > > 
> > > > 
> > > > > 
> > > > > > http://forum.openscenegraph.org/viewtopic.php?p=57295#57295 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295) 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295)) 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295) 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295 
> > > > > > (http://forum.openscenegraph.org/viewtopic.php?p=57295#57295)))
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > > _______________________________________________
> > > > > > osg-users mailing list
> > > > > >  ()
> > > > > > 
> > > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > > 
> > > > > 
> > > > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org))
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > > > >  
> > > > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)))
> > > > > > 
> > > > > > 
> > > > > > 
> > > > > 
> > > > > 
> > > > >  ------------------
> > > > > Post generated by Mail2Forum
> > > > > 
> > > > > 
> > > > 
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > > ------------------
> > > > Read this topic online here:
> > > > 
> > > > 
> > > 
> > 
> > 
> > > 
> > > > http://forum.openscenegraph.org/viewtopic.php?p=57300#57300 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=57300#57300) 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=57300#57300 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=57300#57300))
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > _______________________________________________
> > > > osg-users mailing list
> > > >  ()
> > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org))
> > > > 
> > > > 
> > > > 
> > > > 
> > > 
> > > 
> > >  ------------------
> > > Post generated by Mail2Forum
> > > 
> > 
> > 
> > 
> > ------------------
> > Read this topic online here:
> > 
> > http://forum.openscenegraph.org/viewtopic.php?p=57306#57306 
> > (http://forum.openscenegraph.org/viewtopic.php?p=57306#57306)
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > osg-users mailing list
> >  ()
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org 
> > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > 
> > 
> > 
> 
> 
>  ------------------
> Post generated by Mail2Forum


------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=57311#57311





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to