HI Dan,

I don't know the answer to this off the top of my head.  These changes
are party of a 3rd party submission that I reviewed but now can't
remember the details.  I'm afraid I'm juggling a couple of tasks right
now so can't dive into look into debugging this issue right away.
Perhaps others who've tinkered with this code will be able to spot the
problem/and a solution, if not then I'll come back to this once I've
cleared my intray a bit more.

Robert.

On Thu, Feb 26, 2009 at 5:45 PM, Gilbert, Daniel R.
<daniel.r.gilb...@saic.com> wrote:
> Robert,
>
> I tracked the problem down to where it is failing down in
> Texture::mipmapAfterTexImage(), which ultimately gets called from the
> call to applyTexImage2D_load() in Texure2D::apply().
>
> void Texture::mipmapAfterTexImage(State& state, GenerateMipmapMode
> beforeResult) const
> {
>    switch (beforeResult)
>    {
>    case GENERATE_MIPMAP:
>        {
>            unsigned int contextID = state.getContextID();
>            TextureObject* textureObject = getTextureObject(contextID);
>            if (textureObject)  <=== IS NULL
>            {
>                osg::FBOExtensions* fbo_ext =
> osg::FBOExtensions::instance(contextID, true);
>                fbo_ext->glGenerateMipmapEXT(textureObject->_target);
>            }
>        }
>        break;
>        o
>        o
>        o
> }
>
> The passed in value of beforeResult is GENERATE_MIPMAP.  The call to
> getTextureObject(contextID) simply returns:
>
>        /** Returns a pointer to the texture object for the current
> context. */
>        inline TextureObject* getTextureObject(unsigned int contextID)
> const
>        {
>            return _textureObjectBuffer[contextID].get();
>        }
>
> Since r8606 moved the assignment of _textureObjectBuffer[contextID] to
> *after* the call to applyTexImage2D_load() it's returning a NULL pointer
> so the call to glGenerateMipmapEXT never occurs.  No error message is
> displayed so we're none the wiser.
>
> Considering that the assignment to _textureObjectBuffer[contextID] was
> moved in order to avoid a crash, where should the assignment occur in
> order to avoid crashes while still properly generating MipMaps?
>
> -- Dan
>
>
>> -----Original Message-----
>> From: Gilbert, Daniel R.
>> Sent: Thursday, February 26, 2009 7:17 AM
>> To: OpenSceneGraph Users
>> Subject: Re: [osg-users] Problems with non-resized NPOT
>> texturesandtrilinear min filter
>>
>> Robert,
>>
>> Thanks for confirming that it isn't just me.  Well, at least
>> on machines
>> with an Nvidia card.  Does anyone with an ATI card experience
>> this same
>> issue with the samples I posted?
>>
>> I'll try digging deeper as you suggest, though like I mentioned in my
>> original post I was able to make it work simply by reverting the
>> location of the _textureObjectBuffer assignment in
>> Texture2D.cpp back to
>> where it was before r8606.
>>
>> -- Dan
>>
>> > -----Original Message-----
>> > From: Robert Osfield [mailto:robert.osfi...@gmail.com]
>> > Sent: Thursday, February 26, 2009 12:58 AM
>> > To: OpenSceneGraph Users
>> > Subject: Re: [osg-users] Problems with non-resized NPOT
>> > textures andtrilinear min filter
>> >
>> > Hi Dan,
>> >
>> > On Wed, Feb 25, 2009 at 10:02 PM, Gilbert, Daniel R.
>> > <daniel.r.gilb...@saic.com> wrote:
>> > > Are others able to reproduce this same behavior using my
>> > attached sample?
>> >
>> > Just tried the test models on my Kubuntu 8.10/Gefore8800GTS
>> > cards and I get:
>> >
>> > npot_skydome_linear_noresize.osg   works.
>> > npot_skydome_trilinear_noresize.osg fails.
>> > npot_skydome_trilinear_resize.osg works.
>> >
>> > I also don't get any OpenGL errors when
>> > npot_skydome_trilinear_noresize.osg fails.
>> >
>> > > Any thoughts on how to attempt a fix?
>> >
>> > It could well be a driver issue, but also might be an OSG issue...
>> >
>> > When you have a model without mipmaps you have to generate them,
>> > either by using gluScaleImage or using the one of the two hardware
>> > mipmap extension.  It'd be worth digging into osg::Texture/Texture2D
>> > to see what code paths it's taking to ask for the mipmap generation.
>> >
>> > Robert.
>> >
>> >
>>
>>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to