What about extend the Image class, creating a storage for all faces where
the face0 is the Image base implementation?
the DDS reader will instantiate ImageCubeMap if found more than 1 face.

BR,
 Giuseppe


/** ImageCubeMap class for encapsulating the storage texture cubemap image
data. */
class OSG_EXPORT ImageCubeMap : public Image
{
public:
   virtual Object* cloneType() const { return new ImageCubeMap(); }
   virtual Object* clone(const CopyOp& copyop) const { return new
ImageCubeMap(*this, copyop); }
   virtual osg::ImageCubeMap* asImageCubeMap() { return this; }
   virtual const osg::ImageCubeMap* asImageCubeMap() const { return this; }

   void addFace(osg::Image* image);
   std::vector<osg::Image*> getAllFaces();

protected:

   virtual ~ImageCubeMap() { deallocateData(); }
   ImageCubeMap& operator = (const ImageCubeMap&) { return *this; }
   std::vector<osg::ref_ptr<osg::Image> > mOtherFaces;
};

*in Image class:*

class OSG_EXPORT Image : public BufferData
{
        virtual osg::Image* asImage() { return this; }
        virtual const osg::Image* asImage() const { return this; }
        virtual osg::ImageCubeMap* asImageCubeMap() { return NULL; }
        virtual const osg::ImageCubeMap* asImageCubeMap() const { return
NULL; }
}


On Fri, May 11, 2018 at 10:39 AM, Robert Osfield <robert.osfi...@gmail.com>
wrote:

> Hi Farshid,
>
> I've done a first pass review and don't feel comfortable with adding a
> series of images on the back of one.  This trick is something you will
> be aware of as the author but I can't imagine many other users being
> able to spot that it's even supported let alone how to use it.
>
> I think the correct approach would be to return back a container for
> all of the images. Ideally osg::ImageList would be a full osg::Object
> so we'd be able to have a ReaderWriterDDS::readObject() method that
> could return an object containing all the images.  Perhaps have an
> osg::Images object that subclasses from osg::Object and ImageList.
>
> Thoughts?
> Robert.
>
>
> On 9 May 2018 at 18:56, Farshid Lashkari <fla...@gmail.com> wrote:
> > Hi Robert,
> >
> > I've added an option to the DDS plugin to support loading all cubemap
> > images. The loader accepts an optional data parameter "dds_image_list"
> that
> > is a pointer to an osg::ImageList. When this is specified and the DDS
> file
> > contains multiple cubemap images, the loader will add the additional
> images
> > to the list. This can also be used in the future if someone decides to
> add
> > 2d image array support to the dds plugin.
> >
> > I also added some meta data to the main image that specifies how many
> images
> > are in the file and whether it is a cubemap. I also set the default
> origin
> > to TOP_LEFT. It was previously setting the origin to BOTTOM_LEFT only if
> the
> > flip option was set, but not to TOP_LEFT when the option was not
> present. I
> > believe this should now be the correct behavior.
> >
> > Cheers,
> > Farshid
> >
> > _______________________________________________
> > osg-submissions mailing list
> > osg-submissions@lists.openscenegraph.org
> > http://lists.openscenegraph.org/listinfo.cgi/osg-
> submissions-openscenegraph.org
> >
> _______________________________________________
> osg-submissions mailing list
> osg-submissions@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-
> submissions-openscenegraph.org
>
_______________________________________________
osg-submissions mailing list
osg-submissions@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org

Reply via email to