Merge pull request #454 from mp3butcher/imagebinding

BindingTextureImage: a more complex condition for  _texture->apply ?
This commit is contained in:
OpenSceneGraph git repository
2018-01-23 10:26:20 +00:00
committed by GitHub
3 changed files with 9 additions and 5 deletions

View File

@@ -730,6 +730,8 @@ class OSG_EXPORT Texture : public osg::StateAttribute
void setShadowAmbient(float shadow_ambient) { _shadow_ambient = shadow_ambient; }
float getShadowAmbient() const { return _shadow_ambient; }
/** Gets the texture BufferData */
virtual const BufferData* getBufferData() const { return getImage(0); }
/** Sets the texture image for the specified face. */
virtual void setImage(unsigned int face, Image* image) = 0;
@@ -739,6 +741,7 @@ class OSG_EXPORT Texture : public osg::StateAttribute
/** Gets the texture image for the specified face. */
virtual Image* getImage(unsigned int face) = 0;
/** Gets the const texture image for specified face. */
virtual const Image* getImage(unsigned int face) const = 0;

View File

@@ -84,11 +84,11 @@ class OSG_EXPORT TextureBuffer : public Texture
/** Bind the texture buffer.*/
virtual void apply(State& state) const;
/** Set setBufferData attached */
/** Set BufferData attached */
void setBufferData(BufferData *bo);
/** Set setBufferData attached */
const BufferData * getBufferData()const {return _bufferData.get();}
/** Get BufferData attached */
virtual const BufferData * getBufferData() const { return _bufferData.get(); }
protected :
virtual ~TextureBuffer();

View File

@@ -19,8 +19,9 @@ void BindImageTexture::apply(osg::State&state) const
{
if(_target.valid())
{
osg::Texture::TextureObject *to = _target->getTextureObject( state.getContextID() );
if( !to )
Texture::TextureObject *to = _target->getTextureObject( state.getContextID() );
GLBufferObject *globj = _target->getBufferData()->getBufferObject()->getGLBufferObject( state.getContextID() );
if( !globj || globj->isDirty() )
{
// _target never been applied yet
_target->apply(state);