> "Thanks Robert. A couple more questions. How do I guarantee that only the > changed pixels are uploaded? The source image I'm using is 640x480. To > maximize compatibility, I need to make texture sizes a power of 2 and square > right? That sets the next available size at 1024x1024. That's alot of extra > data to copy. > > If I accessing the Image via the data() method then there's no way to > specify the dimensions of the dirty rectangle. I see that copySubImage takes > a rectangle but the source for copy is an Image object so I'd have to copy > the image data twice (camera -> tempImage ->texture). Is there something I'm > missing? Perhapse I should call glTexSubImage2D directly? [/quote]"
Hi Luis (I know I'm not robert) I've done this before, what you need to do is use a SubloadCallback and attach it to your texture. In the contructor for this you need to find the power of two up and set the actual texture size to that. Then is the subsequent subload call you just copy the actual res image that is attached to the Texture something like below. class CVideoTex2DCallBack : public osg::Texture2D::SubloadCallback { public: CVideoTex2DCallBack(osg::Texture2D* texture) { const osg::Image* _image = texture->getImage(); //set the texture to beleive it is of power of two size texture->setTextureSize(powerOf2Width, powerOf2Width,); //set to linear to disable mipmap generation texture->setFilter(osg::Texture2D::MIN_FILTER, osg::Texture2D::LINEAR); texture->setFilter(osg::Texture2D::MAG_FILTER, osg::Texture2D::LINEAR); void load(const osg::Texture2D& texture, osg::State&) const; void subload(const osg::Texture2D& texture, osg::State&) const; };
_______________________________________________ osg-users mailing list osg-users@lists.openscenegraph.org http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org