Hi Marcus,
I have another question,
as to my program, what if I scale the images first, and then render them as
foreground?
Can OpenSG scale image for me? Is it a time consuming operation?
2009/8/10 Marcus Lindblom <[email protected]>
> Oops! Sorry. I was thinking halfway to the 2.x API (I think)
>
> How about viewport->getMFForegrounds()->setValue(0, ptr). That should
> work on any MField according to the documentation.
>
> http://www.opensg.org/doc-1.6.0/classosg_1_1MFForegroundPtr.html
>
> Cheers,
> /Marcus
>
> Jie Liu wrote:
> > *"* g_ptrViewport->getMFForegrounds()[0] = ptrImgForeground; *"*
> >
> > Sorry, the compiler reports an error: binary '=' :
> > no operator found which takes a right-hand operand of type
> > 'osg::ImageForegroundPtr' (or there is no acceptable conversion)
> >
> > My compiler is VC++, but I dont think this is an issue
> >
> >
> >
> > 2009/8/10 Marcus Lindblom <[email protected]
> > <mailto:[email protected]>>
> >
> > Jie Liu wrote:OO
> > > Hi,
> > >
> > > I want to use OpenSG do display about 150 images located in a
> given
> > > directory.
> > > For each time, I show one of them, and I press left key or right
> > key to
> > > nevigate backward or forward. All images should align center,
> > keep their
> > > width/height (w/h) ratio and they will fit to the width or height
> > of the
> > > window according to the value of w/h ratio.
> > >
> > > I now have three solutions for this purpose.
> > > a). take an image as a background object. The problem is OpenSG
> will
> > > auto scale the image to the window area for me. But as I must
> > keep the
> > > width/height ratio of the image, I give up.
> >
> > That's just how the default ImageBackground works currently. Adding
> > aspect-keeping functionality would be a welcome patch though. :)
> >
> > > b). take an image as a foreground object, the problem is I can
> only
> > > appoint its bottom-left position. There seems no parameters for me
> to
> > > scale its size.
> >
> > IIRC, I'm not sure OpenGL can scale images uploaded with
> glWritePixels,
> > so that would be OpenGL's fault, not OpenSG's. :)
> >
> > > Below are my code to do this
> > >
> ===================================================================
> > > ImagePtr tImage = Image::create();
> > > *tImage->read(file_name[index]);* *// I change the value of
> > /index/
> > > to display different images. Images are loaded dynamically
> > according to
> > > their names*
> > >
> > > ImageForegroundPtr ptrImgForeground =
> ImageForeground::create();
> > > beginEditCP(ptrImgForeground);
> > > {
> > > * ptrImgForeground->addImage(tImage, Pnt2f(0.0, 0)); // Can
> I
> > > assign a bounding box for an image? Or do I have to manually
> > scale the
> > > image first?*
> > > }
> > > endEditCP(ptrImgForeground);
> > >
> > > *
> > g_ptrViewport->getMFForegrounds()->push_back(ptrImgForeground); *
> > > *// push_back is to add a new image to the queue, OpenSG will try
> to
> > > render all images in the queue and this will slow down the
> rendering
> > > speed obviously. But I only want to display a single image at one
> > time.
> > > So what is the right and efficient way to replace the current
> > foreground
> > > image?
> >
> > g_ptrViewport->getMFForegrounds()[0] = ptrImgForeground;
> >
> > > *================================================================
> > >
> > > c). Take an image as a texture material, and attach it to a Quad
> > primitive.
> > > ================================================================
> > > ImagePtr tImage = Image::create();
> > > tImage->read(file_name[index]);
> > >
> > > beginEditCP(g_ptrGeoTex);
> > > g_ptrGeoTex->setImage(tImage); *// g_ptrGeoTex is a globle
> > variable,
> > > its type is SimpleTexturedMaterialPtr*
> > > endEditCP(g_ptrGeoTex);
> > >
> > > beginEditCP(g_ptrGeoQuad);
> > > g_ptrGeoQuad->setMaterial(g_ptrGeoTex);* // I found the
> > > setMaterial process will be very very slow, how can I accelerate
> it?*
> >
> > You're probably suffering from auto mipmap generation here.
> (Mipmapping
> > for textures is enabled by default, and if you set an image with no
> > mipmaps, OpenSG creates them for you whe you use the material for the
> > first time). Try setting the minification filter (minFilter) to
> > GL_LINEAR.
> >
> > > endEditCP(g_ptrGeoQuad);
> > > ================================================================
> > >
> > > So, what is your suggestion to write such a program?
> >
> > If you have enough memory (system and gfx) textures is probably the
> way
> > to go, because you can do more fun stuff with them (animation etc).
> >
> > If not, you probably need to use ImageBackground or ImageForeground,
> but
> > neither of these do what you want currently, so you need to hack them
> a
> > bit. If you know OpenGL well enough to do get it to do what you want,
> > this is pretty easy. (I haven't looked at that part of OpenGL for a
> > time, so I can't say if nor how it can and should be done. Maybe some
> > other guys know better).
> >
> > > I also want to load
> > > all iamges at the begining of the program and store them in
> vectors
> > > (vector<ImagePtr>, and vector<SimpleTexturedMaterialPtr>), but the
> > > program crashed while switching the image. What is the right way
> > to read
> > > and store all image data?
> >
> > You probably want Image|MaterialRefPtr to make sure your images stay
> in
> > memory here. However, make sure your images fit in graphics memory if
> > you use textures.
> >
> > > The email is a little long, I hope it will not bother you too
> much~
> >
> > Not at all. Glad to help. :)
> >
> > Cheers,
> > /Marcus
> >
> >
> >
> >
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> > 30-Day
> > trial. Simplify your report design, integration and deployment - and
> > focus on
> > what you do best, core application coding. Discover what's new with
> > Crystal Reports now. http://p.sf.net/sfu/bobj-july
> > _______________________________________________
> > Opensg-users mailing list
> > [email protected]
> > <mailto:[email protected]>
> > https://lists.sourceforge.net/lists/listinfo/opensg-users
> >
> >
> >
> >
> > --
> > Jie Liu
> > Visualization Research Group
> > Center for Information Science, School of EECS,
> > Room 2104, Science Building No.2,
> > Peking University, Beijing 100871, China
> >
> >
> > ------------------------------------------------------------------------
> >
> >
> ------------------------------------------------------------------------------
> > Let Crystal Reports handle the reporting - Free Crystal Reports 2008
> 30-Day
> > trial. Simplify your report design, integration and deployment - and
> focus on
> > what you do best, core application coding. Discover what's new with
> > Crystal Reports now. http://p.sf.net/sfu/bobj-july
> >
> >
> > ------------------------------------------------------------------------
> >
> > _______________________________________________
> > Opensg-users mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/opensg-users
>
>
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus
> on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now. http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Opensg-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/opensg-users
>
--
Jie Liu
Visualization Research Group
Center for Information Science, School of EECS,
Room 2104, Science Building No.2,
Peking University, Beijing 100871, China
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Opensg-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensg-users