<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
p
        {mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman";}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Gerrick,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>If you can tolerate a few more questions…<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Your UpdateTextureCallback class derives
from osg::Texture*D::SubloadCallback, is that correct?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>What does your call to setSubloadCallback()
look like?  Thanks.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'>Ken.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 color=navy face="Times New Roman"><span
style='font-size:12.0pt;color:navy'><o:p> </o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'>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 <br>
data (that's the _tm-><span class=e><span id="q_115b965b42b92c0f_1">dataField
reference below). Not sure how others are doing it. To subload we have
algorithms that trigger updating </span><br>
<span class=e>the pointer to the texture data.</span><br>
<span class=e>biv</span><br>
<br>
<o:p></o:p></span></font></p>

</span>

<div>

<p class=MsoNormal><span class=gmailquote><font size=3 face="Times New Roman"><span
style='font-size:12.0pt'>On 10/19/07, <b><span style='font-weight:bold'>Sewell,
Kenneth R Civ USAF AFRL/RYZW</span></b> <<a
href="mailto:Kenneth.Sewell@wpafb.af.mil"> Kenneth.Sewell@wpafb.af.mil</a>>
wrote:</span></font></span><o:p></o:p></p>

<div link=blue vlink=blue>

<div>

<p><font size=3 color=navy face="Times New Roman"><span style='font-size:12.0pt;
color:navy'>Thanks for the response.  If you don't mind could you answer a
couple more questions?</span></font><o:p></o:p></p>

<p><font size=3 color=navy face="Times New Roman"><span style='font-size:12.0pt;
color:navy'>What triggers the callbacks?  How/where is the new data to be
subloaded associated with the callback function?</span></font><o:p></o:p></p>

<p><font size=3 color=navy face="Times New Roman"><span style='font-size:12.0pt;
color:navy'> </span></font><o:p></o:p></p>

<p><font size=3 color=navy face="Times New Roman"><span style='font-size:12.0pt;
color:navy'>Thanks.</span></font><o:p></o:p></p>

<div><span id="q_115b965b42b92c0f_1">

<p><font size=3 color=navy face="Times New Roman"><span style='font-size:12.0pt;
color:navy'> </span></font><o:p></o:p></p>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>Hi Ken, <br>
Basically you just need to setup a TextureSubloadCallback for your specific
type of texture(1D,2D,3D).<br>
This allows you to override the load and subload methods that you would
encounter in gl. Then set the<br>
subloadcallback to your texture using:<br>
<br>
Texture*D::setSubloadCallback(SubloadCallback* sb);<br>
<br>
<br>
Overrides are something like the following:<br>
load:<br>
////////////////////////////////////////////////////////////////////////////////////
<br>
void UpdateTextureCallback::load(const osg::Texture3D&
texture,osg::State& state )const<br>
{<br>
     
texture.getExtensions(state.getContextID(),false)->glTexImage3D(GL_TEXTURE_3D,
0,<br>
                                         
GL_RGBA, <br>
                                         
_textureWidth,<br>
                                         
_textureHeight,<br>
                                         
_textureDepth,<br>
                                         
0, GL_RGBA, <br>
                                         
GL_UNSIGNED_BYTE,<br>
                                         
(unsigned char*)_tm->dataField);<br>
<br>
}<br>
and subload :<br>
//////////////////////////////////////////////////////////////////////////////////////////////
<br>
void UpdateTextureCallback::subload(const osg::Texture3D&
texture,osg::State& state) const<br>
{<br>
 texture.getExtensions(state.getContextID(),false)->glTexSubImage3D(GL_TEXTURE_3D,<br>
                    
0, <br>
                    
0,0,0,<br>
                    
_textureWidth,<br>
                    
_textureHeight,<br>
                    
_textureDepth,<br>
                    
GL_RGBA,<br>
                    
GL_UNSIGNED_BYTE, <br>
                    
(unsigned char*)_tm->dataField);<br>
<br>
}<br>
<br>
You'll have to adjust this for your texture type (this is ours for 3D textures)
but this should give you a general idea.<br>
biv<o:p></o:p></span></font></p>

<div>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'>On
10/19/07, <b><span style='font-weight:bold'>Sewell, Kenneth R Civ USAF
AFRL/RYZW</span></b> <<a href="mailto:Kenneth.Sewell@wpafb.af.mil"
target="_blank">Kenneth.Sewell@wpafb.af.mil</a>> wrote:<o:p></o:p></span></font></p>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'><br>
Is there a good example of texture subloading in OSG?  I have a large<br>
image and just want to replace small tiles of the texture.  Can
anyone<br>
give me a few starting pointers?<br>
<br>
<br>
Ken.<br>
_______________________________________________ <br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org" target="_blank">osg-users@lists.openscenegraph.org</a><br>
<a
href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org"
target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
</a><o:p></o:p></span></font></p>

</div>

<p><font size=3 face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>

</div>

</div>

</div>

</span>

<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3
face="Times New Roman"><span style='font-size:12.0pt'><br>
_______________________________________________<br>
osg-users mailing list<br>
<a href="mailto:osg-users@lists.openscenegraph.org">osg-users@lists.openscenegraph.org
</a><br>
<a
href="http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org"
target="_blank">http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
</a><o:p></o:p></span></font></p>

</div>

<p class=MsoNormal><font size=3 face="Times New Roman"><span style='font-size:
12.0pt'><o:p> </o:p></span></font></p>

</div>

</body>

</html>