[osg-users] Texture subloading

Gerrick Bivins biv at iastate.edu
Fri Oct 19 11:39:03 PDT 2007


Right. I'm not sure when the subload callback is actually triggered but you
need a valid context so my first guess would be during the cull traversal
(anyone can correct me on this as I am just guessing). We derive our own
subloadCallback class that has a pointer to the texture
data (that's the _tm->dataField reference below). Not sure how others are
doing it. To subload we have algorithms that trigger updating
the pointer to the texture data.
biv

On 10/19/07, Sewell, Kenneth R Civ USAF AFRL/RYZW <
Kenneth.Sewell at wpafb.af.mil> wrote:
>
>  Thanks for the response.  If you don't mind could you answer a couple
> more questions?
>
> What triggers the callbacks?  How/where is the new data to be subloaded
> associated with the callback function?
>
>
>
> Thanks.
>
>
>
> Hi Ken,
> Basically you just need to setup a TextureSubloadCallback for your
> specific type of texture(1D,2D,3D).
> This allows you to override the load and subload methods that you would
> encounter in gl. Then set the
> subloadcallback to your texture using:
>
> Texture*D::setSubloadCallback(SubloadCallback* sb);
>
>
> Overrides are something like the following:
> load:
> ////////////////////////////////////////////////////////////////////////////////////
>
> void UpdateTextureCallback::load(const osg::Texture3D& texture,osg::State&
> state )const
> {
>       texture.getExtensions(state.getContextID(),false)->glTexImage3D(GL_TEXTURE_3D,
> 0,
>                                           GL_RGBA,
>                                           _textureWidth,
>                                           _textureHeight,
>                                           _textureDepth,
>                                           0, GL_RGBA,
>                                           GL_UNSIGNED_BYTE,
>                                           (unsigned char*)_tm->dataField);
>
> }
> and subload :
> //////////////////////////////////////////////////////////////////////////////////////////////
>
> void UpdateTextureCallback::subload(const osg::Texture3D&
> texture,osg::State& state) const
> {
>  texture.getExtensions(state.getContextID
> (),false)->glTexSubImage3D(GL_TEXTURE_3D,
>                      0,
>                      0,0,0,
>                      _textureWidth,
>                      _textureHeight,
>                      _textureDepth,
>                      GL_RGBA,
>                      GL_UNSIGNED_BYTE,
>                      (unsigned char*)_tm->dataField);
>
> }
>
> You'll have to adjust this for your texture type (this is ours for 3D
> textures) but this should give you a general idea.
> biv
>
> On 10/19/07, *Sewell, Kenneth R Civ USAF AFRL/RYZW* <
> Kenneth.Sewell at wpafb.af.mil> wrote:
>
>
> Is there a good example of texture subloading in OSG?  I have a large
> image and just want to replace small tiles of the texture.  Can anyone
> give me a few starting pointers?
>
>
> Ken.
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20071019/29f8ddd0/attachment-0003.htm>


More information about the osg-users mailing list