Renamed ArrayDispatchers to AttributeDispatchers to better reflect it's role
This commit is contained in:
parent
e14ee80282
commit
38ff11f8c5
@ -11,8 +11,8 @@
|
||||
* OpenSceneGraph Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef OSG_ArrayDispatchers
|
||||
#define OSG_ArrayDispatchers 1
|
||||
#ifndef OSG_ATTRIBUTEDISPATCHERS
|
||||
#define OSG_ATTRIBUTEDISPATCHERS 1
|
||||
|
||||
#include <osg/ref_ptr>
|
||||
#include <osg/Array>
|
||||
@ -31,12 +31,12 @@ struct AttributeDispatch : public osg::Referenced
|
||||
};
|
||||
|
||||
/** Helper class for managing the dispatch to OpenGL of various attribute arrays such as stored in osg::Geometry.*/
|
||||
class OSG_EXPORT ArrayDispatchers : public osg::Referenced
|
||||
class OSG_EXPORT AttributeDispatchers : public osg::Referenced
|
||||
{
|
||||
public:
|
||||
|
||||
ArrayDispatchers();
|
||||
~ArrayDispatchers();
|
||||
AttributeDispatchers();
|
||||
~AttributeDispatchers();
|
||||
|
||||
void setState(osg::State* state);
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include <osg/DisplaySettings>
|
||||
#include <osg/Polytope>
|
||||
#include <osg/Viewport>
|
||||
#include <osg/ArrayDispatchers>
|
||||
#include <osg/AttributeDispatchers>
|
||||
#include <osg/GraphicsCostEstimator>
|
||||
|
||||
#include <iosfwd>
|
||||
@ -877,7 +877,7 @@ class OSG_EXPORT State : public Referenced
|
||||
void initializeExtensionProcs();
|
||||
|
||||
/** Get the helper class for dispatching osg::Arrays as OpenGL attribute data.*/
|
||||
inline ArrayDispatchers& getArrayDispatchers() { return _arrayDispatchers; }
|
||||
inline AttributeDispatchers& getAttributeDispatchers() { return _arrayDispatchers; }
|
||||
|
||||
|
||||
/** Set the helper class that provides applications with estimate on how much different graphics operations will cost.*/
|
||||
@ -1341,7 +1341,7 @@ class OSG_EXPORT State : public Referenced
|
||||
unsigned int _dynamicObjectCount;
|
||||
osg::ref_ptr<DynamicObjectRenderingCompletedCallback> _completeDynamicObjectRenderingCallback;
|
||||
|
||||
ArrayDispatchers _arrayDispatchers;
|
||||
AttributeDispatchers _arrayDispatchers;
|
||||
|
||||
osg::ref_ptr<GraphicsCostEstimator> _graphicsCostEstimator;
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
#include <osg/Referenced>
|
||||
#include <osg/GLExtensions>
|
||||
#include <osg/Array>
|
||||
#include <osg/ArrayDispatchers>
|
||||
#include <osg/AttributeDispatchers>
|
||||
|
||||
namespace osg {
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* OpenSceneGraph Public License for more details.
|
||||
*/
|
||||
#include <osg/ArrayDispatchers>
|
||||
#include <osg/AttributeDispatchers>
|
||||
#include <osg/State>
|
||||
#include <osg/Drawable>
|
||||
|
||||
@ -141,7 +141,7 @@ public:
|
||||
AttributeDispatchList _attributeDispatchList;
|
||||
};
|
||||
|
||||
ArrayDispatchers::ArrayDispatchers():
|
||||
AttributeDispatchers::AttributeDispatchers():
|
||||
_initialized(false),
|
||||
_state(0),
|
||||
_normalDispatchers(0),
|
||||
@ -153,7 +153,7 @@ ArrayDispatchers::ArrayDispatchers():
|
||||
|
||||
}
|
||||
|
||||
ArrayDispatchers::~ArrayDispatchers()
|
||||
AttributeDispatchers::~AttributeDispatchers()
|
||||
{
|
||||
delete _normalDispatchers;
|
||||
delete _colorDispatchers;
|
||||
@ -168,12 +168,12 @@ ArrayDispatchers::~ArrayDispatchers()
|
||||
}
|
||||
}
|
||||
|
||||
void ArrayDispatchers::setState(osg::State* state)
|
||||
void AttributeDispatchers::setState(osg::State* state)
|
||||
{
|
||||
_state = state;
|
||||
}
|
||||
|
||||
void ArrayDispatchers::init()
|
||||
void AttributeDispatchers::init()
|
||||
{
|
||||
if (_initialized) return;
|
||||
|
||||
@ -213,41 +213,41 @@ void ArrayDispatchers::init()
|
||||
// With inidices
|
||||
//
|
||||
|
||||
AttributeDispatch* ArrayDispatchers::normalDispatcher(Array* array)
|
||||
AttributeDispatch* AttributeDispatchers::normalDispatcher(Array* array)
|
||||
{
|
||||
return _useVertexAttribAlias ?
|
||||
vertexAttribDispatcher(_state->getNormalAlias()._location, array) :
|
||||
_normalDispatchers->dispatcher(array);
|
||||
}
|
||||
|
||||
AttributeDispatch* ArrayDispatchers::colorDispatcher(Array* array)
|
||||
AttributeDispatch* AttributeDispatchers::colorDispatcher(Array* array)
|
||||
{
|
||||
return _useVertexAttribAlias ?
|
||||
vertexAttribDispatcher(_state->getColorAlias()._location, array) :
|
||||
_colorDispatchers->dispatcher(array);
|
||||
}
|
||||
|
||||
AttributeDispatch* ArrayDispatchers::secondaryColorDispatcher(Array* array)
|
||||
AttributeDispatch* AttributeDispatchers::secondaryColorDispatcher(Array* array)
|
||||
{
|
||||
return _useVertexAttribAlias ?
|
||||
vertexAttribDispatcher(_state->getSecondaryColorAlias()._location, array) :
|
||||
_secondaryColorDispatchers->dispatcher(array);
|
||||
}
|
||||
|
||||
AttributeDispatch* ArrayDispatchers::fogCoordDispatcher(Array* array)
|
||||
AttributeDispatch* AttributeDispatchers::fogCoordDispatcher(Array* array)
|
||||
{
|
||||
return _useVertexAttribAlias ?
|
||||
vertexAttribDispatcher(_state->getFogCoordAlias()._location, array) :
|
||||
_fogCoordDispatchers->dispatcher(array);
|
||||
}
|
||||
|
||||
AttributeDispatch* ArrayDispatchers::vertexAttribDispatcher(unsigned int unit, Array* array)
|
||||
AttributeDispatch* AttributeDispatchers::vertexAttribDispatcher(unsigned int unit, Array* array)
|
||||
{
|
||||
if (unit>=_vertexAttribDispatchers.size()) assignVertexAttribDispatchers(unit);
|
||||
return _vertexAttribDispatchers[unit]->dispatcher(array);
|
||||
}
|
||||
|
||||
void ArrayDispatchers::assignVertexAttribDispatchers(unsigned int unit)
|
||||
void AttributeDispatchers::assignVertexAttribDispatchers(unsigned int unit)
|
||||
{
|
||||
GLExtensions* extensions = _state->get<GLExtensions>();
|
||||
|
||||
@ -262,7 +262,7 @@ void ArrayDispatchers::assignVertexAttribDispatchers(unsigned int unit)
|
||||
}
|
||||
}
|
||||
|
||||
void ArrayDispatchers::reset()
|
||||
void AttributeDispatchers::reset()
|
||||
{
|
||||
if (!_initialized) init();
|
||||
|
@ -24,7 +24,7 @@ SET(TARGET_H
|
||||
${HEADER_PATH}/ApplicationUsage
|
||||
${HEADER_PATH}/ArgumentParser
|
||||
${HEADER_PATH}/Array
|
||||
${HEADER_PATH}/ArrayDispatchers
|
||||
${HEADER_PATH}/AttributeDispatchers
|
||||
${HEADER_PATH}/AudioStream
|
||||
${HEADER_PATH}/AutoTransform
|
||||
${HEADER_PATH}/Billboard
|
||||
@ -239,7 +239,7 @@ SET(TARGET_SRC
|
||||
ApplicationUsage.cpp
|
||||
ArgumentParser.cpp
|
||||
Array.cpp
|
||||
ArrayDispatchers.cpp
|
||||
AttributeDispatchers.cpp
|
||||
AudioStream.cpp
|
||||
AutoTransform.cpp
|
||||
Billboard.cpp
|
||||
|
@ -13,7 +13,7 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <osg/Geometry>
|
||||
#include <osg/ArrayDispatchers>
|
||||
#include <osg/AttributeDispatchers>
|
||||
#include <osg/VertexArrayState>
|
||||
#include <osg/Notify>
|
||||
|
||||
@ -827,24 +827,24 @@ void Geometry::drawVertexArraysImplementation(RenderInfo& renderInfo) const
|
||||
|
||||
bool handleVertexAttributes = !_vertexAttribList.empty();
|
||||
|
||||
ArrayDispatchers& arrayDispatchers = state.getArrayDispatchers();
|
||||
AttributeDispatchers& attributeDispatchers = state.getAttributeDispatchers();
|
||||
|
||||
arrayDispatchers.reset();
|
||||
arrayDispatchers.setUseVertexAttribAlias(state.getUseVertexAttributeAliasing());
|
||||
attributeDispatchers.reset();
|
||||
attributeDispatchers.setUseVertexAttribAlias(state.getUseVertexAttributeAliasing());
|
||||
|
||||
if (handleVertexAttributes)
|
||||
{
|
||||
for(unsigned int unit=0;unit<_vertexAttribList.size();++unit)
|
||||
{
|
||||
arrayDispatchers.activateVertexAttribArray(unit, _vertexAttribList[unit].get());
|
||||
attributeDispatchers.activateVertexAttribArray(unit, _vertexAttribList[unit].get());
|
||||
}
|
||||
}
|
||||
|
||||
// activate or dispatch any attributes that are bound overall
|
||||
arrayDispatchers.activateNormalArray(_normalArray.get());
|
||||
arrayDispatchers.activateColorArray(_colorArray.get());
|
||||
arrayDispatchers.activateSecondaryColorArray(_secondaryColorArray.get());
|
||||
arrayDispatchers.activateFogCoordArray(_fogCoordArray.get());
|
||||
attributeDispatchers.activateNormalArray(_normalArray.get());
|
||||
attributeDispatchers.activateColorArray(_colorArray.get());
|
||||
attributeDispatchers.activateSecondaryColorArray(_secondaryColorArray.get());
|
||||
attributeDispatchers.activateFogCoordArray(_fogCoordArray.get());
|
||||
|
||||
if (state.useVertexArrayObject(_useVertexArrayObject))
|
||||
{
|
||||
@ -896,14 +896,14 @@ void Geometry::drawVertexArraysImplementation(RenderInfo& renderInfo) const
|
||||
void Geometry::drawPrimitivesImplementation(RenderInfo& renderInfo) const
|
||||
{
|
||||
State& state = *renderInfo.getState();
|
||||
ArrayDispatchers& arrayDispatchers = state.getArrayDispatchers();
|
||||
AttributeDispatchers& attributeDispatchers = state.getAttributeDispatchers();
|
||||
bool usingVertexBufferObjects = state.useVertexBufferObject(_supportsVertexBufferObjects && _useVertexBufferObjects);
|
||||
|
||||
bool bindPerPrimitiveSetActive = arrayDispatchers.active();
|
||||
bool bindPerPrimitiveSetActive = attributeDispatchers.active();
|
||||
for(unsigned int primitiveSetNum=0; primitiveSetNum!=_primitives.size(); ++primitiveSetNum)
|
||||
{
|
||||
// dispatch any attributes that are bound per primitive
|
||||
if (bindPerPrimitiveSetActive) arrayDispatchers.dispatch(primitiveSetNum);
|
||||
if (bindPerPrimitiveSetActive) attributeDispatchers.dispatch(primitiveSetNum);
|
||||
|
||||
const PrimitiveSet* primitiveset = _primitives[primitiveSetNum].get();
|
||||
|
||||
|
@ -868,13 +868,13 @@ void SharedGeometry::drawImplementation(osg::RenderInfo& renderInfo) const
|
||||
bool checkForGLErrors = state.getCheckForGLErrors()==osg::State::ONCE_PER_ATTRIBUTE;
|
||||
if (checkForGLErrors) state.checkGLErrors("start of SharedGeometry::drawImplementation()");
|
||||
|
||||
osg::ArrayDispatchers& arrayDispatchers = state.getArrayDispatchers();
|
||||
osg::AttributeDispatchers& attributeDispatchers = state.getAttributeDispatchers();
|
||||
|
||||
arrayDispatchers.reset();
|
||||
arrayDispatchers.setUseVertexAttribAlias(state.getUseVertexAttributeAliasing());
|
||||
attributeDispatchers.reset();
|
||||
attributeDispatchers.setUseVertexAttribAlias(state.getUseVertexAttributeAliasing());
|
||||
|
||||
arrayDispatchers.activateNormalArray(_normalArray.get());
|
||||
arrayDispatchers.activateColorArray(_colorArray.get());
|
||||
attributeDispatchers.activateNormalArray(_normalArray.get());
|
||||
attributeDispatchers.activateColorArray(_colorArray.get());
|
||||
|
||||
state.lazyDisablingOfVertexAttributes();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user