add front face culling
This commit is contained in:
+13
-3
@@ -62,7 +62,7 @@ void Actor::Reset()
|
|||||||
m_bClearZBuffer = false;
|
m_bClearZBuffer = false;
|
||||||
m_bZTest = false;
|
m_bZTest = false;
|
||||||
m_bZWrite = false;
|
m_bZWrite = false;
|
||||||
m_bUseBackfaceCull = false;
|
m_CullMode = CULL_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Actor::Actor()
|
Actor::Actor()
|
||||||
@@ -230,7 +230,7 @@ void Actor::SetRenderStates()
|
|||||||
DISPLAY->SetZTest( m_bZTest );
|
DISPLAY->SetZTest( m_bZTest );
|
||||||
if( m_bClearZBuffer )
|
if( m_bClearZBuffer )
|
||||||
DISPLAY->ClearZBuffer();
|
DISPLAY->ClearZBuffer();
|
||||||
DISPLAY->SetBackfaceCull( m_bUseBackfaceCull );
|
DISPLAY->SetCullMode( m_CullMode );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Actor::EndDraw()
|
void Actor::EndDraw()
|
||||||
@@ -823,7 +823,8 @@ void Actor::HandleCommand( const ParsedCommand &command )
|
|||||||
else if( sName=="ztest" ) SetZTest( bParam(1) );
|
else if( sName=="ztest" ) SetZTest( bParam(1) );
|
||||||
else if( sName=="zwrite" ) SetZWrite( bParam(1) );
|
else if( sName=="zwrite" ) SetZWrite( bParam(1) );
|
||||||
else if( sName=="clearzbuffer" ) SetClearZBuffer( bParam(1) );
|
else if( sName=="clearzbuffer" ) SetClearZBuffer( bParam(1) );
|
||||||
else if( sName=="backfacecull" ) SetUseBackfaceCull( bParam(1) );
|
else if( sName=="backfacecull" ) SetCullMode( bParam(1) ? CULL_BACK : CULL_NONE );
|
||||||
|
else if( sName=="cullmode" ) SetCullMode( sParam(1) );
|
||||||
else if( sName=="hidden" ) SetHidden( bParam(1) );
|
else if( sName=="hidden" ) SetHidden( bParam(1) );
|
||||||
else if( sName=="hibernate" ) SetHibernate( fParam(1) );
|
else if( sName=="hibernate" ) SetHibernate( fParam(1) );
|
||||||
else if( sName=="playcommand" ) PlayCommand( sParam(1) );
|
else if( sName=="playcommand" ) PlayCommand( sParam(1) );
|
||||||
@@ -957,6 +958,15 @@ void Actor::SetBlendMode( CString s )
|
|||||||
else ASSERT(0);
|
else ASSERT(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actor::SetCullMode( CString s )
|
||||||
|
{
|
||||||
|
s.MakeLower();
|
||||||
|
if (s=="back") SetCullMode( CULL_BACK );
|
||||||
|
else if(s=="front") SetCullMode( CULL_FRONT );
|
||||||
|
else if(s=="none") SetCullMode( CULL_NONE );
|
||||||
|
else ASSERT(0);
|
||||||
|
}
|
||||||
|
|
||||||
void Actor::CopyTweening( const Actor &from )
|
void Actor::CopyTweening( const Actor &from )
|
||||||
{
|
{
|
||||||
m_current = from.m_current;
|
m_current = from.m_current;
|
||||||
|
|||||||
@@ -287,7 +287,8 @@ public:
|
|||||||
virtual void SetUseZBuffer( bool b ) { SetZTest(b); SetZWrite(b); }
|
virtual void SetUseZBuffer( bool b ) { SetZTest(b); SetZWrite(b); }
|
||||||
virtual void SetZTest( bool b ) { m_bZTest = b; }
|
virtual void SetZTest( bool b ) { m_bZTest = b; }
|
||||||
virtual void SetZWrite( bool b ) { m_bZWrite = b; }
|
virtual void SetZWrite( bool b ) { m_bZWrite = b; }
|
||||||
virtual void SetUseBackfaceCull( bool b ) { m_bUseBackfaceCull = b; }
|
virtual void SetCullMode( CullMode mode ) { m_CullMode = mode; }
|
||||||
|
virtual void SetCullMode( CString );
|
||||||
|
|
||||||
//
|
//
|
||||||
// fade command
|
// fade command
|
||||||
@@ -381,7 +382,7 @@ protected:
|
|||||||
BlendMode m_BlendMode;
|
BlendMode m_BlendMode;
|
||||||
bool m_bClearZBuffer;
|
bool m_bClearZBuffer;
|
||||||
bool m_bZTest, m_bZWrite;
|
bool m_bZTest, m_bZWrite;
|
||||||
bool m_bUseBackfaceCull;
|
CullMode m_CullMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -151,7 +151,8 @@ void ActorFrame::DeleteAllChildren()
|
|||||||
void ActorFrame::HandleCommand( const ParsedCommand &command )
|
void ActorFrame::HandleCommand( const ParsedCommand &command )
|
||||||
{
|
{
|
||||||
Actor::HandleCommand( command );
|
Actor::HandleCommand( command );
|
||||||
// don't propograte to children
|
|
||||||
|
// don't propograte most commands to children
|
||||||
}
|
}
|
||||||
|
|
||||||
void ActorFrame::GainingFocus( float fRate, bool bRewindMovie, bool bLoop )
|
void ActorFrame::GainingFocus( float fRate, bool bRewindMovie, bool bLoop )
|
||||||
|
|||||||
@@ -495,7 +495,7 @@ void NoteDisplay::DrawHoldTopCap( const HoldNote& hn, const bool bIsBeingHeld, f
|
|||||||
DISPLAY->ClearAllTextures();
|
DISPLAY->ClearAllTextures();
|
||||||
DISPLAY->SetTexture( 0, pTexture );
|
DISPLAY->SetTexture( 0, pTexture );
|
||||||
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
||||||
DISPLAY->SetBackfaceCull( false );
|
DISPLAY->SetCullMode( CULL_NONE );
|
||||||
DISPLAY->SetTextureWrapping(false);
|
DISPLAY->SetTextureWrapping(false);
|
||||||
|
|
||||||
const float fFrameWidth = pSprTopCap->GetUnzoomedWidth();
|
const float fFrameWidth = pSprTopCap->GetUnzoomedWidth();
|
||||||
@@ -567,7 +567,7 @@ void NoteDisplay::DrawHoldBody( const HoldNote& hn, const bool bIsBeingHeld, flo
|
|||||||
DISPLAY->ClearAllTextures();
|
DISPLAY->ClearAllTextures();
|
||||||
DISPLAY->SetTexture( 0, pTexture );
|
DISPLAY->SetTexture( 0, pTexture );
|
||||||
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
||||||
DISPLAY->SetBackfaceCull( false );
|
DISPLAY->SetCullMode( CULL_NONE );
|
||||||
DISPLAY->SetTextureWrapping( true );
|
DISPLAY->SetTextureWrapping( true );
|
||||||
|
|
||||||
|
|
||||||
@@ -670,7 +670,7 @@ void NoteDisplay::DrawHoldBottomCap( const HoldNote& hn, const bool bIsBeingHeld
|
|||||||
DISPLAY->ClearAllTextures();
|
DISPLAY->ClearAllTextures();
|
||||||
DISPLAY->SetTexture( 0, pTexture );
|
DISPLAY->SetTexture( 0, pTexture );
|
||||||
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
DISPLAY->SetBlendMode( BLEND_NORMAL );
|
||||||
DISPLAY->SetBackfaceCull( false );
|
DISPLAY->SetCullMode( CULL_NONE );
|
||||||
DISPLAY->SetTextureWrapping(false);
|
DISPLAY->SetTextureWrapping(false);
|
||||||
|
|
||||||
const float fFrameWidth = pBottomCap->GetUnzoomedWidth();
|
const float fFrameWidth = pBottomCap->GetUnzoomedWidth();
|
||||||
|
|||||||
@@ -205,7 +205,7 @@ void RageDisplay::DrawCircle( const RageSpriteVertex &p, float radius )
|
|||||||
void RageDisplay::SetDefaultRenderStates()
|
void RageDisplay::SetDefaultRenderStates()
|
||||||
{
|
{
|
||||||
SetLighting( false );
|
SetLighting( false );
|
||||||
SetBackfaceCull( false );
|
SetCullMode( CULL_NONE );
|
||||||
SetZBuffer( false );
|
SetZBuffer( false );
|
||||||
SetAlphaTest( true );
|
SetAlphaTest( true );
|
||||||
SetBlendMode( BLEND_NORMAL );
|
SetBlendMode( BLEND_NORMAL );
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public:
|
|||||||
virtual void ClearZBuffer() = 0;
|
virtual void ClearZBuffer() = 0;
|
||||||
void SetZBuffer( bool b ) { SetZWrite(b); SetZTest(b); } // shortcut
|
void SetZBuffer( bool b ) { SetZWrite(b); SetZTest(b); } // shortcut
|
||||||
|
|
||||||
virtual void SetBackfaceCull( bool b ) = 0;
|
virtual void SetCullMode( CullMode mode ) = 0;
|
||||||
|
|
||||||
virtual void SetAlphaTest( bool b ) = 0;
|
virtual void SetAlphaTest( bool b ) = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -1049,9 +1049,22 @@ void RageDisplay_D3D::SetLightDirectional(
|
|||||||
g_pd3dDevice->SetLight( index, &light );
|
g_pd3dDevice->SetLight( index, &light );
|
||||||
}
|
}
|
||||||
|
|
||||||
void RageDisplay_D3D::SetBackfaceCull( bool b )
|
void RageDisplay_D3D::SetCullMode( CullMode mode )
|
||||||
{
|
{
|
||||||
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, b ? D3DCULL_CW : D3DCULL_NONE );
|
switch( mode )
|
||||||
|
{
|
||||||
|
case CULL_BACK:
|
||||||
|
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW );
|
||||||
|
break;
|
||||||
|
case CULL_FRONT:
|
||||||
|
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW );
|
||||||
|
break;
|
||||||
|
case CULL_NONE:
|
||||||
|
g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RageDisplay_D3D::DeleteTexture( unsigned uTexHandle )
|
void RageDisplay_D3D::DeleteTexture( unsigned uTexHandle )
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ public:
|
|||||||
void SetZWrite( bool b );
|
void SetZWrite( bool b );
|
||||||
void SetZTest( bool b );
|
void SetZTest( bool b );
|
||||||
void ClearZBuffer();
|
void ClearZBuffer();
|
||||||
void SetBackfaceCull( bool b );
|
void SetCullMode( CullMode mode );
|
||||||
void SetAlphaTest( bool b );
|
void SetAlphaTest( bool b );
|
||||||
void SetMaterial(
|
void SetMaterial(
|
||||||
const RageColor &emissive,
|
const RageColor &emissive,
|
||||||
|
|||||||
@@ -1218,12 +1218,24 @@ void RageDisplay_OGL::SetLightDirectional(
|
|||||||
glPopMatrix();
|
glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RageDisplay_OGL::SetBackfaceCull( bool b )
|
void RageDisplay_OGL::SetCullMode( CullMode mode )
|
||||||
{
|
{
|
||||||
if( b )
|
switch( mode )
|
||||||
|
{
|
||||||
|
case CULL_BACK:
|
||||||
glEnable( GL_CULL_FACE );
|
glEnable( GL_CULL_FACE );
|
||||||
else
|
glCullFace( GL_BACK );
|
||||||
|
break;
|
||||||
|
case CULL_FRONT:
|
||||||
|
glEnable( GL_CULL_FACE );
|
||||||
|
glCullFace( GL_FRONT );
|
||||||
|
break;
|
||||||
|
case CULL_NONE:
|
||||||
glDisable( GL_CULL_FACE );
|
glDisable( GL_CULL_FACE );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ASSERT(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const RageDisplay::PixelFormatDesc *RageDisplay_OGL::GetPixelFormatDesc(PixelFormat pf) const
|
const RageDisplay::PixelFormatDesc *RageDisplay_OGL::GetPixelFormatDesc(PixelFormat pf) const
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public:
|
|||||||
void SetZWrite( bool b );
|
void SetZWrite( bool b );
|
||||||
void SetZTest( bool b );
|
void SetZTest( bool b );
|
||||||
void ClearZBuffer();
|
void ClearZBuffer();
|
||||||
void SetBackfaceCull( bool b );
|
void SetCullMode( CullMode mode );
|
||||||
void SetAlphaTest( bool b );
|
void SetAlphaTest( bool b );
|
||||||
void SetMaterial(
|
void SetMaterial(
|
||||||
const RageColor &emissive,
|
const RageColor &emissive,
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
* put this here. */
|
* put this here. */
|
||||||
enum GlowMode { GLOW_BRIGHTEN, GLOW_WHITEN };
|
enum GlowMode { GLOW_BRIGHTEN, GLOW_WHITEN };
|
||||||
enum BlendMode { BLEND_NORMAL, BLEND_ADD, BLEND_NO_EFFECT, BLEND_INVALID };
|
enum BlendMode { BLEND_NORMAL, BLEND_ADD, BLEND_NO_EFFECT, BLEND_INVALID };
|
||||||
|
enum CullMode { CULL_BACK, CULL_FRONT, CULL_NONE };
|
||||||
|
|
||||||
|
|
||||||
struct RageVector2
|
struct RageVector2
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : Screen( sClassName
|
|||||||
|
|
||||||
m_sprCDTitleFront.SetName( "CDTitle" );
|
m_sprCDTitleFront.SetName( "CDTitle" );
|
||||||
m_sprCDTitleFront.Load( THEME->GetPathToG("ScreenSelectMusic fallback cdtitle") );
|
m_sprCDTitleFront.Load( THEME->GetPathToG("ScreenSelectMusic fallback cdtitle") );
|
||||||
m_sprCDTitleFront.SetUseBackfaceCull(true);
|
m_sprCDTitleFront.SetCullMode( CULL_BACK );
|
||||||
m_sprCDTitleFront.SetDiffuse( RageColor(1,1,1,1) );
|
m_sprCDTitleFront.SetDiffuse( RageColor(1,1,1,1) );
|
||||||
m_sprCDTitleFront.SetEffectSpin( RageVector3(0, 360/CDTITLE_SPIN_SECONDS, 0) );
|
m_sprCDTitleFront.SetEffectSpin( RageVector3(0, 360/CDTITLE_SPIN_SECONDS, 0) );
|
||||||
SET_XY( m_sprCDTitleFront );
|
SET_XY( m_sprCDTitleFront );
|
||||||
@@ -182,7 +182,7 @@ ScreenSelectMusic::ScreenSelectMusic( CString sClassName ) : Screen( sClassName
|
|||||||
m_sprCDTitleBack.SetName( "CDTitle" );
|
m_sprCDTitleBack.SetName( "CDTitle" );
|
||||||
m_sprCDTitleBack.Load( THEME->GetPathToG("ScreenSelectMusic fallback cdtitle") );
|
m_sprCDTitleBack.Load( THEME->GetPathToG("ScreenSelectMusic fallback cdtitle") );
|
||||||
FlipSpriteHorizontally(m_sprCDTitleBack);
|
FlipSpriteHorizontally(m_sprCDTitleBack);
|
||||||
m_sprCDTitleBack.SetUseBackfaceCull(true);
|
m_sprCDTitleBack.SetCullMode( CULL_BACK );
|
||||||
m_sprCDTitleBack.SetDiffuse( RageColor(0.2f,0.2f,0.2f,1) );
|
m_sprCDTitleBack.SetDiffuse( RageColor(0.2f,0.2f,0.2f,1) );
|
||||||
m_sprCDTitleBack.SetRotationY( 180 );
|
m_sprCDTitleBack.SetRotationY( 180 );
|
||||||
m_sprCDTitleBack.SetEffectSpin( RageVector3(0, 360/CDTITLE_SPIN_SECONDS, 0) );
|
m_sprCDTitleBack.SetEffectSpin( RageVector3(0, 360/CDTITLE_SPIN_SECONDS, 0) );
|
||||||
|
|||||||
Reference in New Issue
Block a user