Made the use of the new projection and modelview matrix uniforms optional

This commit is contained in:
Robert Osfield
2009-10-11 06:05:19 +00:00
parent f479eb174c
commit 9e2567cb88
5 changed files with 45 additions and 6 deletions

View File

@@ -175,8 +175,11 @@ class OSG_EXPORT State : public Referenced, public Observer
_projection=_identity;
}
if (_projectionMatrixUniform.valid()) _projectionMatrixUniform->set(*_projection);
if (_modelViewProjectionMatrixUniform.valid()) _modelViewProjectionMatrixUniform->set((*_modelView) * (*_projection));
if (_useModelViewAndProjectionUniforms)
{
if (_projectionMatrixUniform.valid()) _projectionMatrixUniform->set(*_projection);
if (_modelViewProjectionMatrixUniform.valid()) _modelViewProjectionMatrixUniform->set((*_modelView) * (*_projection));
}
glMatrixMode( GL_PROJECTION );
glLoadMatrix(_projection->ptr());
@@ -202,8 +205,11 @@ class OSG_EXPORT State : public Referenced, public Observer
_modelView=_identity;
}
if (_modelViewMatrixUniform.valid()) _modelViewMatrixUniform->set(*_modelView);
if (_modelViewProjectionMatrixUniform.valid()) _modelViewProjectionMatrixUniform->set((*_modelView) * (*_projection));
if (_useModelViewAndProjectionUniforms)
{
if (_modelViewMatrixUniform.valid()) _modelViewMatrixUniform->set(*_modelView);
if (_modelViewProjectionMatrixUniform.valid()) _modelViewProjectionMatrixUniform->set((*_modelView) * (*_projection));
}
glLoadMatrix(_modelView->ptr());
}
@@ -214,6 +220,9 @@ class OSG_EXPORT State : public Referenced, public Observer
return *_modelView;
}
void setUseModelViewAndProjectionUniforms(bool flag) { _useModelViewAndProjectionUniforms = flag; }
bool getUseModelViewAndProjectionUniforms() const { return _useModelViewAndProjectionUniforms; }
void applyModelViewAndProjectionUniformsIfRequired();
osg::Uniform* getModelViewMatrixUniform() { return _modelViewMatrixUniform.get(); }
@@ -1100,6 +1109,7 @@ class OSG_EXPORT State : public Referenced, public Observer
ref_ptr<const RefMatrix> _projection;
ref_ptr<const RefMatrix> _modelView;
bool _useModelViewAndProjectionUniforms;
ref_ptr<Uniform> _modelViewMatrixUniform;
ref_ptr<Uniform> _projectionMatrixUniform;
ref_ptr<Uniform> _modelViewProjectionMatrixUniform;