[osg-users] Texture subloading

Sewell, Kenneth R Civ USAF AFRL/RYZW Kenneth.Sewell at WPAFB.AF.MIL
Fri Oct 19 13:06:14 PDT 2007


Gerrick,

If you can tolerate a few more questions...

 

Your UpdateTextureCallback class derives from
osg::Texture*D::SubloadCallback, is that correct?

What does your call to setSubloadCallback() look like?  Thanks.

 

Ken.

 

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 <mailto: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_TEXTU
RE_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_TE
XTURE_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.or
g 

 


_______________________________________________
osg-users mailing list
osg-users at lists.openscenegraph.org 
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.or
g 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/attachments/20071019/d92d0891/attachment-0003.htm>


More information about the osg-users mailing list