Conveted GeoSet to use the new state::set*Pointer/disable*Pointer methods
to keep the current state valid.
This commit is contained in:
@@ -244,7 +244,7 @@ void GeoSet::setTextureBinding( const BindingType binding )
|
||||
set_fast_path();
|
||||
}
|
||||
|
||||
void GeoSet::drawImmediateMode(State&)
|
||||
void GeoSet::drawImmediateMode(State& state)
|
||||
{
|
||||
if( _coords == (Vec3 *)0 && _iaformat == IA_OFF ) return;
|
||||
|
||||
@@ -253,9 +253,9 @@ void GeoSet::drawImmediateMode(State&)
|
||||
computeNumVerts();
|
||||
|
||||
if( _fast_path )
|
||||
draw_fast_path();
|
||||
draw_fast_path(state);
|
||||
else
|
||||
draw_alternate_path();
|
||||
draw_alternate_path(state);
|
||||
}
|
||||
|
||||
void GeoSet::computeNumVerts() const
|
||||
|
||||
@@ -81,7 +81,7 @@ void GeoSet::set_fast_path( void )
|
||||
}
|
||||
|
||||
|
||||
void GeoSet::draw_fast_path( void )
|
||||
void GeoSet::draw_fast_path( State& state )
|
||||
{
|
||||
IndexPointer ocindex = _cindex;
|
||||
|
||||
@@ -93,79 +93,112 @@ void GeoSet::draw_fast_path( void )
|
||||
break;
|
||||
|
||||
case (V_ON) :
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
|
||||
state.disableNormalPointer();
|
||||
state.disableColorPointer();
|
||||
state.disableTexCoordPointer(0);
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glDisableClientState( GL_COLOR_ARRAY );
|
||||
// glDisableClientState( GL_NORMAL_ARRAY );
|
||||
// glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (T_ON|V_ON) :
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableNormalPointer();
|
||||
state.disableColorPointer();
|
||||
state.setTexCoordPointer(0, 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glDisableClientState( GL_COLOR_ARRAY );
|
||||
// glDisableClientState( GL_NORMAL_ARRAY );
|
||||
// glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (N_ON|V_ON) :
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
glEnableClientState( GL_NORMAL_ARRAY );
|
||||
glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableColorPointer();
|
||||
state.disableTexCoordPointer(0);
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
state.setNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glDisableClientState( GL_COLOR_ARRAY );
|
||||
// glEnableClientState( GL_NORMAL_ARRAY );
|
||||
// glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (N_ON|T_ON|V_ON) :
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
glEnableClientState( GL_NORMAL_ARRAY );
|
||||
glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableColorPointer();
|
||||
state.setNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
state.setTexCoordPointer(0, 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glDisableClientState( GL_COLOR_ARRAY );
|
||||
// glEnableClientState( GL_NORMAL_ARRAY );
|
||||
// glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (C_ON|V_ON) :
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableNormalPointer();
|
||||
state.disableTexCoordPointer(0);
|
||||
state.setColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glEnableClientState( GL_COLOR_ARRAY );
|
||||
// glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
// glDisableClientState( GL_NORMAL_ARRAY );
|
||||
// glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (C_ON|T_ON|V_ON) :
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableNormalPointer();
|
||||
state.setColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
state.setTexCoordPointer(0, 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glEnableClientState( GL_COLOR_ARRAY );
|
||||
// glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
// glDisableClientState( GL_NORMAL_ARRAY );
|
||||
// glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (C_ON|N_ON|V_ON) :
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
glEnableClientState( GL_NORMAL_ARRAY );
|
||||
glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.disableTexCoordPointer(0);
|
||||
state.setNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
state.setColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glEnableClientState( GL_COLOR_ARRAY );
|
||||
// glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
// glEnableClientState( GL_NORMAL_ARRAY );
|
||||
// glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
|
||||
case (C_ON|N_ON|T_ON|V_ON) :
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
glEnableClientState( GL_NORMAL_ARRAY );
|
||||
glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.setNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
state.setColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
state.setTexCoordPointer(0, 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
state.setVertexPointer(3, GL_FLOAT, 0,_coords);
|
||||
// glEnableClientState( GL_COLOR_ARRAY );
|
||||
// glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
// glEnableClientState( GL_NORMAL_ARRAY );
|
||||
// glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glTexCoordPointer( 2, GL_FLOAT, 0, (GLfloat *)_tcoords );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -227,16 +260,18 @@ void GeoSet::draw_fast_path( void )
|
||||
}
|
||||
|
||||
|
||||
void GeoSet::draw_alternate_path( void )
|
||||
void GeoSet::draw_alternate_path( State& state )
|
||||
{
|
||||
if( (_color_binding == BIND_PERVERTEX) && (_colindex.null() || _colindex ==_cindex) && (_flat_shaded_skip == 0) )
|
||||
{
|
||||
glEnableClientState( GL_COLOR_ARRAY );
|
||||
glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
// glEnableClientState( GL_COLOR_ARRAY );
|
||||
// glColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
state.setColorPointer( 4, GL_FLOAT, 0, (GLfloat *)_colors );
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableClientState( GL_COLOR_ARRAY );
|
||||
// glDisableClientState( GL_COLOR_ARRAY );
|
||||
state.disableColorPointer();
|
||||
if( _color_binding == BIND_OVERALL )
|
||||
{
|
||||
if( _colindex.valid() )
|
||||
@@ -248,12 +283,14 @@ void GeoSet::draw_alternate_path( void )
|
||||
|
||||
if( (_normal_binding == BIND_PERVERTEX) && (_nindex.null() || _nindex ==_cindex) && (_flat_shaded_skip == 0) )
|
||||
{
|
||||
glEnableClientState( GL_NORMAL_ARRAY );
|
||||
glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
// glEnableClientState( GL_NORMAL_ARRAY );
|
||||
// glNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
state.setNormalPointer( GL_FLOAT, 0, (GLfloat *)_normals );
|
||||
}
|
||||
else
|
||||
{
|
||||
glDisableClientState( GL_NORMAL_ARRAY );
|
||||
state.disableNormalPointer();
|
||||
// glDisableClientState( GL_NORMAL_ARRAY );
|
||||
if( _normal_binding == BIND_OVERALL )
|
||||
{
|
||||
if( _nindex.valid() )
|
||||
@@ -265,14 +302,17 @@ void GeoSet::draw_alternate_path( void )
|
||||
|
||||
if( (_texture_binding == BIND_PERVERTEX) && (_tindex.null()) )
|
||||
{
|
||||
glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
glTexCoordPointer( 2, GL_FLOAT, 0, _tcoords );
|
||||
// glEnableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
// glTexCoordPointer( 2, GL_FLOAT, 0, _tcoords );
|
||||
state.setTexCoordPointer( 0, 2, GL_FLOAT, 0, _tcoords );
|
||||
}
|
||||
else
|
||||
glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
state.disableTexCoordPointer(0);
|
||||
// glDisableClientState( GL_TEXTURE_COORD_ARRAY );
|
||||
|
||||
glEnableClientState( GL_VERTEX_ARRAY );
|
||||
glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
// glEnableClientState( GL_VERTEX_ARRAY );
|
||||
// glVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
state.setVertexPointer( 3, GL_FLOAT, 0, (GLfloat *)_coords );
|
||||
|
||||
if( _needprimlen ) // LINE_STRIP, LINE_LOOP, TRIANGLE_STRIP,
|
||||
// TRIANGLE_FAN, QUAD_STRIP, POLYGONS
|
||||
|
||||
@@ -27,7 +27,7 @@ RegisterDotOsgWrapperProxy g_BlendFuncProxy
|
||||
RegisterDotOsgWrapperProxy g_TransparencyProxy
|
||||
(
|
||||
osgNew osg::BlendFunc,
|
||||
"Transparancy",
|
||||
"Transparency",
|
||||
"Object StateAttribute Transparency",
|
||||
&BlendFunc_readLocalData,
|
||||
&BlendFunc_writeLocalData
|
||||
|
||||
Reference in New Issue
Block a user