Added numTextureUnits parameter to the osg::State::resetVertexAttributeAlias(bool, unit) method, and set the default to 8.
git-svn-id: http://svn.openscenegraph.org/osg/OpenSceneGraph/trunk@14523 16af8721-9629-0410-8352-f15c8da7e697
This commit is contained in:
parent
671d8dc342
commit
fce7137525
@ -256,7 +256,7 @@ class OSG_EXPORT State : public Referenced
|
|||||||
typedef std::vector<VertexAttribAlias> VertexAttribAliasList;
|
typedef std::vector<VertexAttribAlias> VertexAttribAliasList;
|
||||||
|
|
||||||
/** Reset the vertex attribute aliasing to osg's default. This method needs to be called before render anything unless you really know what you're doing !*/
|
/** Reset the vertex attribute aliasing to osg's default. This method needs to be called before render anything unless you really know what you're doing !*/
|
||||||
void resetVertexAttributeAlias(bool compactAliasing=true);
|
void resetVertexAttributeAlias(bool compactAliasing=true, unsigned int numTextureUnits=8);
|
||||||
|
|
||||||
/** Set the vertex attribute aliasing for "vertex". This method needs to be called before render anything unless you really know what you're doing !*/
|
/** Set the vertex attribute aliasing for "vertex". This method needs to be called before render anything unless you really know what you're doing !*/
|
||||||
void setVertexAlias(const VertexAttribAlias& alias) { _vertexAlias = alias; }
|
void setVertexAlias(const VertexAttribAlias& alias) { _vertexAlias = alias; }
|
||||||
|
@ -827,18 +827,19 @@ Polytope State::getViewFrustum() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void State::resetVertexAttributeAlias(bool compactAliasing)
|
void State::resetVertexAttributeAlias(bool compactAliasing, unsigned int numTextureUnits)
|
||||||
{
|
{
|
||||||
_texCoordAliasList.clear();
|
_texCoordAliasList.clear();
|
||||||
_attributeBindingList.clear();
|
_attributeBindingList.clear();
|
||||||
|
|
||||||
if (compactAliasing)
|
if (compactAliasing)
|
||||||
{
|
{
|
||||||
setUpVertexAttribAlias(_vertexAlias,0, "gl_Vertex","osg_Vertex","attribute vec4 ");
|
unsigned int slot = 0;
|
||||||
setUpVertexAttribAlias(_normalAlias, 1, "gl_Normal","osg_Normal","attribute vec3 ");
|
setUpVertexAttribAlias(_vertexAlias, slot++, "gl_Vertex","osg_Vertex","attribute vec4 ");
|
||||||
setUpVertexAttribAlias(_colorAlias, 2, "gl_Color","osg_Color","attribute vec4 ");
|
setUpVertexAttribAlias(_normalAlias, slot++, "gl_Normal","osg_Normal","attribute vec3 ");
|
||||||
|
setUpVertexAttribAlias(_colorAlias, slot++, "gl_Color","osg_Color","attribute vec4 ");
|
||||||
|
|
||||||
_texCoordAliasList.resize(5);
|
_texCoordAliasList.resize(numTextureUnits);
|
||||||
for(unsigned int i=0; i<_texCoordAliasList.size(); i++)
|
for(unsigned int i=0; i<_texCoordAliasList.size(); i++)
|
||||||
{
|
{
|
||||||
std::stringstream gl_MultiTexCoord;
|
std::stringstream gl_MultiTexCoord;
|
||||||
@ -846,11 +847,11 @@ void State::resetVertexAttributeAlias(bool compactAliasing)
|
|||||||
gl_MultiTexCoord<<"gl_MultiTexCoord"<<i;
|
gl_MultiTexCoord<<"gl_MultiTexCoord"<<i;
|
||||||
osg_MultiTexCoord<<"osg_MultiTexCoord"<<i;
|
osg_MultiTexCoord<<"osg_MultiTexCoord"<<i;
|
||||||
|
|
||||||
setUpVertexAttribAlias(_texCoordAliasList[i], 3+i, gl_MultiTexCoord.str(), osg_MultiTexCoord.str(), "attribute vec4 ");
|
setUpVertexAttribAlias(_texCoordAliasList[i], slot++, gl_MultiTexCoord.str(), osg_MultiTexCoord.str(), "attribute vec4 ");
|
||||||
}
|
}
|
||||||
|
|
||||||
setUpVertexAttribAlias(_secondaryColorAlias, 6, "gl_SecondaryColor","osg_SecondaryColor","attribute vec4 ");
|
setUpVertexAttribAlias(_secondaryColorAlias, slot++, "gl_SecondaryColor","osg_SecondaryColor","attribute vec4 ");
|
||||||
setUpVertexAttribAlias(_fogCoordAlias, 7, "gl_FogCoord","osg_FogCoord","attribute float ");
|
setUpVertexAttribAlias(_fogCoordAlias, slot++, "gl_FogCoord","osg_FogCoord","attribute float ");
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -861,7 +862,8 @@ void State::resetVertexAttributeAlias(bool compactAliasing)
|
|||||||
setUpVertexAttribAlias(_secondaryColorAlias, 4, "gl_SecondaryColor","osg_SecondaryColor","attribute vec4 ");
|
setUpVertexAttribAlias(_secondaryColorAlias, 4, "gl_SecondaryColor","osg_SecondaryColor","attribute vec4 ");
|
||||||
setUpVertexAttribAlias(_fogCoordAlias, 5, "gl_FogCoord","osg_FogCoord","attribute float ");
|
setUpVertexAttribAlias(_fogCoordAlias, 5, "gl_FogCoord","osg_FogCoord","attribute float ");
|
||||||
|
|
||||||
_texCoordAliasList.resize(8);
|
unsigned int base = 8;
|
||||||
|
_texCoordAliasList.resize(numTextureUnits);
|
||||||
for(unsigned int i=0; i<_texCoordAliasList.size(); i++)
|
for(unsigned int i=0; i<_texCoordAliasList.size(); i++)
|
||||||
{
|
{
|
||||||
std::stringstream gl_MultiTexCoord;
|
std::stringstream gl_MultiTexCoord;
|
||||||
@ -869,7 +871,7 @@ void State::resetVertexAttributeAlias(bool compactAliasing)
|
|||||||
gl_MultiTexCoord<<"gl_MultiTexCoord"<<i;
|
gl_MultiTexCoord<<"gl_MultiTexCoord"<<i;
|
||||||
osg_MultiTexCoord<<"osg_MultiTexCoord"<<i;
|
osg_MultiTexCoord<<"osg_MultiTexCoord"<<i;
|
||||||
|
|
||||||
setUpVertexAttribAlias(_texCoordAliasList[i], 8+i, gl_MultiTexCoord.str(), osg_MultiTexCoord.str(), "attribute vec4 ");
|
setUpVertexAttribAlias(_texCoordAliasList[i], base+i, gl_MultiTexCoord.str(), osg_MultiTexCoord.str(), "attribute vec4 ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1440,6 +1442,7 @@ void State::setUpVertexAttribAlias(VertexAttribAlias& alias, GLuint location, co
|
|||||||
{
|
{
|
||||||
alias = VertexAttribAlias(location, glName, osgName, declaration);
|
alias = VertexAttribAlias(location, glName, osgName, declaration);
|
||||||
_attributeBindingList[osgName] = location;
|
_attributeBindingList[osgName] = location;
|
||||||
|
OSG_NOTICE<<"State::setUpVertexAttribAlias("<<location<<" "<<glName<<" "<<osgName<<")"<<std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
void State::applyProjectionMatrix(const osg::RefMatrix* matrix)
|
void State::applyProjectionMatrix(const osg::RefMatrix* matrix)
|
||||||
|
Loading…
Reference in New Issue
Block a user