speed up editor beat bar drawing (frame rate is not 3x as fast!)

fixed inaccurate 2k/xp video card detection
This commit is contained in:
Chris Danford
2003-02-22 00:22:27 +00:00
parent 5a4d403daf
commit 294144575c
13 changed files with 149 additions and 165 deletions
+30 -34
View File
@@ -38,6 +38,9 @@ NoteField::NoteField()
m_rectMarkerBar.TurnShadowOff();
m_rectMarkerBar.SetEffectDiffuseShift( 2, RageColor(1,1,1,0.5f), RageColor(0.5f,0.5f,0.5f,0.5f) );
m_sprBars.Load( THEME->GetPathTo("Graphics","edit bars") );
m_sprBars.StopAnimating();
m_fBeginMarker = m_fEndMarker = -1;
m_fPercentFadeToFail = -1;
@@ -91,48 +94,41 @@ void NoteField::DrawBeatBar( const float fBeat )
NoteType nt = BeatToNoteType( fBeat );
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
const float fYOffset = ArrowGetYOffset( m_PlayerNumber, fBeat );
const float fYPos = ArrowGetYPos( m_PlayerNumber, fYOffset );
RageVertex v[4]; // upper-left, upper-right, lower-right, lower-left
memset( v, 0, sizeof(v) );
int iSegWidth;
int iSpaceWidth;
float fBrightness;
float fScrollSpeed = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fScrollSpeed;
switch( nt )
float fAlpha;
int iState;
if( bIsMeasure )
{
default: ASSERT(0);
case NOTE_TYPE_4TH: iSegWidth = 16; iSpaceWidth = 0; fBrightness = 1; break;
case NOTE_TYPE_8TH: iSegWidth = 12; iSpaceWidth = 4; fBrightness = SCALE(fScrollSpeed,1.f,2.f,0.f,1.f); break;
case NOTE_TYPE_16TH:iSegWidth = 4; iSpaceWidth = 4; fBrightness = SCALE(fScrollSpeed,2.f,4.f,0.f,1.f); break;
fAlpha = 1;
iState = 0;
}
else
{
float fScrollSpeed = GAMESTATE->m_PlayerOptions[m_PlayerNumber].m_fScrollSpeed;
switch( nt )
{
default: ASSERT(0);
case NOTE_TYPE_4TH: fAlpha = 1; iState = 1; break;
case NOTE_TYPE_8TH: fAlpha = SCALE(fScrollSpeed,1.f,2.f,0.f,1.f); iState = 2; break;
case NOTE_TYPE_16TH:fAlpha = SCALE(fScrollSpeed,2.f,4.f,0.f,1.f); iState = 3; break;
}
CLAMP( fAlpha, 0, 1 );
}
CLAMP( fBrightness, 0, 1 );
DISPLAY->SetTexture( NULL );
DISPLAY->SetTextureModeModulate();
DISPLAY->SetBlendModeNormal();
float fWidth = GetWidth();
for( float f=-fWidth/2; f<+fWidth/2; )
{
v[0].c = v[1].c = v[2].c = v[3].c = RageColor(1,1,1,0.5f*fBrightness);
float fFrameWidth = m_sprBars.GetUnzoomedWidth();
float fLeft = f;
float fRight = f+iSegWidth;
float fHeight = bIsMeasure ? 6.f : 3.f;
v[0].p = RageVector3( fLeft, fYPos-fHeight/2, 0 ); // upper-left
v[1].p = RageVector3( fRight, fYPos-fHeight/2, 0 ); // upper-right
v[2].p = RageVector3( fRight, fYPos+fHeight/2, 0 ); // lower-right
v[3].p = RageVector3( fLeft, fYPos+fHeight/2, 0 ); // lower-left
m_sprBars.SetX( 0 );
m_sprBars.SetY( fYPos );
m_sprBars.SetDiffuse( RageColor(1,1,1,fAlpha) );
m_sprBars.SetState( iState );
m_sprBars.SetCustomTextureRect( RectF(0,SCALE(iState,0.f,4.f,0.f,1.f), fWidth/fFrameWidth, SCALE(iState+1,0.f,4.f,0.f,1.f)) );
m_sprBars.SetZoomX( fWidth/m_sprBars.GetUnzoomedWidth() );
m_sprBars.Draw();
DISPLAY->DrawQuad( v );
f += iSegWidth + iSpaceWidth;
}
if( bIsMeasure )
{