clean up RageDisplay methods, add ability to mask song banner

The masking uses the Z-buffer under the assumption that some cards don't have a stencil.  Should we be using the stencil instead?  It doesn't really matter because we never need both the Z buffer and stencil buffer simultaneously.
This commit is contained in:
Chris Danford
2003-05-15 06:09:19 +00:00
parent 2b1099666c
commit 54bedc3eba
27 changed files with 169 additions and 252 deletions
+4 -4
View File
@@ -456,11 +456,11 @@ HelpText=Press START to continue
TimerSeconds=15
[ScreenSelectMusic]
BannerX=160
BannerY=162
BannerOnCommand=x,148;y,172;addx,-400;bounceend,0.5;addx,400
BannerX=148
BannerY=172
BannerOnCommand=addx,-400;bounceend,0.5;addx,400
BannerOffCommand=bouncebegin,0.5;addx,-400
BannerWidth=282
BannerWidth=284
BannerHeight=92
BannerFrameX=160
BannerFrameY=162
+13 -3
View File
@@ -47,7 +47,8 @@ void Actor::Reset()
m_fShadowLength = 4;
m_bTextureWrapping = false;
m_bIsAnimating = true;
m_bBlendAdd = false;
m_BlendMode = BLEND_NORMAL;
m_bUseZBuffer = false;
}
Actor::Actor()
@@ -184,6 +185,15 @@ void Actor::BeginDraw() // set the world matrix and calculate actor properties
}
}
void Actor::SetRenderStates()
{
// set Actor-defined render states
DISPLAY->SetTextureWrapping( m_bTextureWrapping );
DISPLAY->SetBlendMode( m_BlendMode );
DISPLAY->SetZBuffer( m_bUseZBuffer );
DISPLAY->SetBackfaceCull( m_bUseBackfaceCull );
}
void Actor::EndDraw()
{
DISPLAY->PopMatrix();
@@ -733,8 +743,8 @@ void Actor::Command( CString sCommandString )
else if( sName=="scaletocover" ) { RectI R(iParam(1), iParam(2), iParam(3), iParam(4)); ScaleToCover(R); }
// Commands that take effect immediately (ignoring the tweening queue):
else if( sName=="animate" ) EnableAnimation( bParam(1) );
else if( sName=="texturewrapping" ) EnableTextureWrapping( bParam(1) );
else if( sName=="additiveblend" ) EnableAdditiveBlend( bParam(1) );
else if( sName=="texturewrapping" ) SetTextureWrapping( bParam(1) );
else if( sName=="additiveblend" ) SetBlendMode( bParam(1) ? BLEND_ADD : BLEND_NORMAL );
else
{
CString sError = ssprintf( "Unrecognized command name '%s' in command string '%s'.", sName.c_str(), sCommandString.c_str() );
+17 -7
View File
@@ -54,7 +54,8 @@ public:
// let subclasses override
virtual void Draw(); // calls, BeginDraw, DrawPrimitives, EndDraw
virtual void BeginDraw(); // pushes transform onto world matrix stack
virtual void DrawPrimitives() {} // override with Actor specific action
virtual void SetRenderStates(); // Actor should call at beginning of their DrawPrimitives()
virtual void DrawPrimitives() {}; // Derivitives should override
virtual void EndDraw(); // pops transform from world matrix stack
bool IsFirstUpdate();
virtual void Update( float fDeltaTime );
@@ -219,14 +220,18 @@ public:
void SetShadowLength( float fLength );
void EnableShadow( bool b ) { m_bShadow = b; }
virtual void EnableAdditiveBlend( bool b ) { m_bBlendAdd = b; }
virtual void EnableAnimation( bool b ) { m_bIsAnimating = b; }
virtual void StartAnimating() { this->EnableAnimation(true); };
virtual void StopAnimating() { this->EnableAnimation(false); };
virtual void EnableTextureWrapping( bool b ) { m_bTextureWrapping = b; }
//
// render states
//
virtual void SetBlendMode( BlendMode mode ) { m_BlendMode = mode; }
virtual void SetTextureWrapping( bool b ) { m_bTextureWrapping = b; }
virtual void SetUseZBuffer( bool b ) { m_bUseZBuffer = b; }
virtual void SetUseBackfaceCull( bool b ) { m_bUseBackfaceCull = b; }
//
// fade command
@@ -302,10 +307,15 @@ protected:
//
bool m_bShadow;
float m_fShadowLength;
bool m_bTextureWrapping;
bool m_bIsAnimating;
bool m_bBlendAdd;
//
// render states
//
bool m_bTextureWrapping;
BlendMode m_BlendMode;
bool m_bUseZBuffer;
bool m_bUseBackfaceCull;
};
#endif
+13
View File
@@ -48,6 +48,10 @@ void ActorFrame::MoveToHead( Actor* pActor )
void ActorFrame::DrawPrimitives()
{
// Don't set Actor-defined render states because we won't be drawing
// any geometry that belongs to this object.
// Actor::DrawPrimitives();
// draw all sub-ActorFrames while we're in the ActorFrame's local coordinate space
for( unsigned i=0; i<m_SubActors.size(); i++ ) {
m_SubActors[i]->Draw();
@@ -77,6 +81,15 @@ void ActorFrame::SetDiffuse( RageColor c )
m_SubActors[i]->SetDiffuse(c );
}
void ActorFrame::SetUseZBuffer( bool b )
{
Actor::SetUseZBuffer( b );
// set all sub-Actors
for( unsigned i=0; i<m_SubActors.size(); i++ )
m_SubActors[i]->SetUseZBuffer( b );
}
float ActorFrame::GetTweenTimeLeft() const
{
float m = Actor::GetTweenTimeLeft();
+2
View File
@@ -27,6 +27,8 @@ public:
virtual void SetDiffuse( RageColor c );
virtual void SetUseZBuffer( bool b );
/* Amount of time until all tweens (and all children's tweens) have stopped: */
virtual float GetTweenTimeLeft() const;
+4 -4
View File
@@ -132,7 +132,7 @@ void BGAnimationLayer::LoadFromVisualization( CString sMoviePath )
m_Sprites.push_back(new Sprite);
m_Sprites.back()->LoadBG( sMoviePath );
m_Sprites.back()->StretchTo( RectI(SCREEN_LEFT,SCREEN_TOP,SCREEN_RIGHT,SCREEN_BOTTOM) );
m_Sprites.back()->EnableAdditiveBlend( true );
m_Sprites.back()->SetBlendMode( BLEND_ADD );
}
@@ -326,7 +326,7 @@ void BGAnimationLayer::LoadFromAniLayerFile( CString sPath )
{
m_Sprites.push_back(new Sprite);
m_Sprites.back()->Load( ID );
m_Sprites.back()->EnableTextureWrapping( true ); // gets rid of some "cracks"
m_Sprites.back()->SetTextureWrapping( true ); // gets rid of some "cracks"
switch( effect )
{
@@ -385,7 +385,7 @@ void BGAnimationLayer::LoadFromAniLayerFile( CString sPath )
if( sPath.Find("add") != -1 )
for( unsigned i=0; i<m_Sprites.size(); i++ )
m_Sprites[i]->EnableAdditiveBlend( true );
m_Sprites[i]->SetBlendMode( BLEND_ADD );
/*
CString sDir, sFName, sExt;
@@ -582,7 +582,7 @@ void BGAnimationLayer::LoadFromIni( CString sAniDir, CString sLayer )
{
m_Sprites.push_back(NewSprite(IsBanner));
m_Sprites.back()->Load( ID );
m_Sprites.back()->EnableTextureWrapping( true ); // gets rid of some "cracks"
m_Sprites.back()->SetTextureWrapping( true ); // gets rid of some "cracks"
m_Sprites.back()->SetZoom( randomf(m_fZoomMin,m_fZoomMax) );
}
}
+1 -1
View File
@@ -12,7 +12,7 @@
*/
#include "CroppedSprite.h"
#include "RageTextureManager.h"
#include "RageTexture.h"
class Song;
class Course;
+2 -7
View File
@@ -280,14 +280,9 @@ void BitmapText::DrawPrimitives()
return;
DISPLAY->SetTextureModeModulate();
if( m_bBlendAdd )
DISPLAY->SetBlendModeAdd();
else
DISPLAY->SetBlendModeNormal();
/* Draw if we're not fully transparent or the zbuffer is enabled (which ignores
* alpha). */
if( m_temp.diffuse[0].a != 0 || DISPLAY->ZBufferEnabled())
/* Draw if we're not fully transparent or the zbuffer is enabled */
if( m_temp.diffuse[0].a != 0 )
{
//////////////////////
// render the shadow
+2 -2
View File
@@ -96,7 +96,7 @@ void CourseContentsList::Update( float fDeltaTime )
void CourseContentsList::DrawPrimitives()
{
// turn on Z buffer to clip items
DISPLAY->EnableZBuffer();
DISPLAY->SetZBuffer( true );
// write to z buffer so that top and bottom are clipped
m_quad.SetZ( 1 );
@@ -128,7 +128,7 @@ void CourseContentsList::DrawPrimitives()
}
// turn off Z buffer
DISPLAY->DisableZBuffer();
DISPLAY->SetZBuffer( false );
}
void CourseContentsList::TweenInAfterChangedCourse()
+2 -2
View File
@@ -67,7 +67,7 @@ void DancingCharacters::DrawPrimitives()
m_CameraAt,
RageVector3(0,1,0) );
DISPLAY->EnableLighting( true );
DISPLAY->SetLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0.4f,0.4f,0.4f,1),
@@ -78,7 +78,7 @@ void DancingCharacters::DrawPrimitives()
ActorFrame::DrawPrimitives();
DISPLAY->SetLightOff( 0 );
DISPLAY->EnableLighting( false );
DISPLAY->SetLighting( false );
DISPLAY->ExitPerspective();
}
+5 -4
View File
@@ -16,6 +16,8 @@
FadingBanner::FadingBanner()
{
m_iIndexFront = 0;
for( int i=0; i<2; i++ )
this->AddChild( &m_Banner[i] );
}
void FadingBanner::SetCroppedSize( float fWidth, float fHeight )
@@ -26,14 +28,13 @@ void FadingBanner::SetCroppedSize( float fWidth, float fHeight )
void FadingBanner::Update( float fDeltaTime )
{
Actor::Update( fDeltaTime );
for( int i=0; i<2; i++ )
m_Banner[i].Update( fDeltaTime );
ActorFrame::Update( fDeltaTime );
}
void FadingBanner::DrawPrimitives()
{
Actor::DrawPrimitives();
// draw manually
// ActorFrame::DrawPrimitives();
m_Banner[GetBackIndex()].Draw();
m_Banner[m_iIndexFront].Draw();
}
+2 -1
View File
@@ -12,8 +12,9 @@
*/
#include "Banner.h"
#include "ActorFrame.h"
class FadingBanner : public Actor
class FadingBanner : public ActorFrame
{
public:
FadingBanner();
+2 -2
View File
@@ -116,7 +116,7 @@ public:
void DrawPrimitives()
{
DISPLAY->EnableZBuffer();
DISPLAY->SetZBuffer( true );
if( GAMESTATE->IsPlayerEnabled(m_PlayerNumber) )
{
@@ -139,7 +139,7 @@ public:
}
DISPLAY->DisableZBuffer();
DISPLAY->SetZBuffer( false );
m_sprFrame.Draw();
+6 -4
View File
@@ -24,6 +24,8 @@ Model::Model ()
{
m_pModel = NULL;
m_pBones = NULL;
m_bTextureWrapping = true;
m_bUseZBuffer = true;
}
Model::~Model ()
@@ -723,13 +725,13 @@ bool Model::LoadMilkshapeAsciiBones( CString sPath )
void Model::DrawPrimitives()
{
if (!m_pModel)
return;
DISPLAY->Scale( 1, -1, 1 ); // flip so positive Y is up
Actor::DrawPrimitives(); // set Actor-specified render states
DISPLAY->SetBlendModeNormal();
DISPLAY->EnableZBuffer();
DISPLAY->Scale( 1, -1, 1 ); // flip Y so positive is up
for (int i = 0; i < (int)m_pModel->Meshes.size(); i++)
{
@@ -796,7 +798,7 @@ void Model::DrawPrimitives()
DISPLAY->DrawIndexedTriangles( &TempVertices[0], (Uint16*)&pMesh->Triangles[0], pMesh->Triangles.size()*3 );
}
DISPLAY->DisableZBuffer();
DISPLAY->SetZBuffer( false );
}
+8 -8
View File
@@ -418,12 +418,12 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
RageTexture* pTexture = pBottomCap->GetTexture();
const RectF *pRect = pBottomCap->GetCurrentTextureCoordRect();
DISPLAY->SetTexture( pTexture );
DISPLAY->SetBlendModeNormal();
DISPLAY->SetBlendMode( BLEND_NORMAL );
if( bDrawGlowOnly )
DISPLAY->SetTextureModeGlow();
else
DISPLAY->SetTextureModeModulate();
DISPLAY->EnableTextureWrapping(false);
DISPLAY->SetTextureWrapping(false);
const float fFrameWidth = pBottomCap->GetUnzoomedWidth();
const float fFrameHeight = pBottomCap->GetUnzoomedHeight();
@@ -483,12 +483,12 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
RageTexture* pTexture = pSprBody->GetTexture();
const RectF *pRect = pSprBody->GetCurrentTextureCoordRect();
DISPLAY->SetTexture( pTexture );
DISPLAY->SetBlendModeNormal();
DISPLAY->SetBlendMode( BLEND_NORMAL );
if( bDrawGlowOnly )
DISPLAY->SetTextureModeGlow();
else
DISPLAY->SetTextureModeModulate();
DISPLAY->EnableTextureWrapping();
DISPLAY->SetTextureWrapping( true );
const float fFrameWidth = pSprBody->GetUnzoomedWidth();
@@ -561,12 +561,12 @@ void NoteDisplay::DrawHold( const HoldNote& hn, const bool bActive, const float
RageTexture* pTexture = pSprTopCap->GetTexture();
const RectF *pRect = pSprTopCap->GetCurrentTextureCoordRect();
DISPLAY->SetTexture( pTexture );
DISPLAY->SetBlendModeNormal();
DISPLAY->SetBlendMode( BLEND_NORMAL );
if( bDrawGlowOnly )
DISPLAY->SetTextureModeGlow();
else
DISPLAY->SetTextureModeModulate();
DISPLAY->EnableTextureWrapping(false);
DISPLAY->SetTextureWrapping(false);
const float fFrameWidth = pSprTopCap->GetUnzoomedWidth();
const float fFrameHeight = pSprTopCap->GetUnzoomedHeight();
@@ -705,7 +705,7 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
if( cache->m_bUseLighting )
{
DISPLAY->EnableLighting( true );
DISPLAY->SetLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0.0f,0.0f,0.0f,1),
@@ -719,7 +719,7 @@ void NoteDisplay::DrawTap( const int iCol, const float fBeat, const bool bOnSame
if( cache->m_bUseLighting )
{
DISPLAY->SetLightOff( 0 );
DISPLAY->EnableLighting( false );
DISPLAY->SetLighting( false );
}
}
+41 -23
View File
@@ -132,6 +132,10 @@ void RageDisplay::SetupOpenGL()
glDisable(GL_DEPTH_TEST);
glDisable(GL_CULL_FACE);
/* Reject pixels that are completely transparent early in the pipeline */
glAlphaFunc( GL_GREATER, 0.01f );
glEnable( GL_ALPHA_TEST );
/*
* Set state variables
*/
@@ -906,13 +910,6 @@ void RageDisplay::SetTextureModeModulate()
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
}
/* Set the blend mode for both texture and alpha. This is all that's
* available pre-OpenGL 1.4. */
void RageDisplay::SetBlendMode(int src, int dst)
{
glBlendFunc( GLenum(src), GLenum(dst) );
}
void RageDisplay::SetTextureModeGlow(GlowMode m)
{
if(m == GLOW_WHITEN && !m_oglspecs->EXT_texture_env_combine)
@@ -921,7 +918,7 @@ void RageDisplay::SetTextureModeGlow(GlowMode m)
switch(m)
{
case GLOW_BRIGHTEN:
SetBlendMode( GL_SRC_ALPHA, GL_ONE );
glBlendFunc( GL_SRC_ALPHA, GL_ONE );
return;
case GLOW_WHITEN:
@@ -940,33 +937,46 @@ void RageDisplay::SetTextureModeGlow(GlowMode m)
}
}
void RageDisplay::SetBlendModeNormal()
void RageDisplay::SetBlendMode( BlendMode mode )
{
SetBlendMode( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
}
void RageDisplay::SetBlendModeAdd()
{
SetBlendMode( GL_ONE, GL_ONE );
switch( mode )
{
case BLEND_NORMAL:
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
break;
case BLEND_ADD:
glBlendFunc( GL_ONE, GL_ONE );
break;
case BLEND_NO_EFFECT:
glBlendFunc( GL_ZERO, GL_ONE );
break;
default:
ASSERT(0);
}
}
bool RageDisplay::ZBufferEnabled() const
bool RageDisplay::IsZBufferEnabled() const
{
bool a;
glGetBooleanv( GL_DEPTH_TEST, (unsigned char*)&a );
return a;
}
void RageDisplay::EnableZBuffer()
void RageDisplay::SetZBuffer( bool b )
{
glEnable( GL_DEPTH_TEST );
if( b )
glEnable( GL_DEPTH_TEST );
else
glDisable( GL_DEPTH_TEST );
}
void RageDisplay::DisableZBuffer()
void RageDisplay::ClearZBuffer()
{
glDisable( GL_DEPTH_TEST );
glClear( GL_DEPTH_BUFFER_BIT );
}
void RageDisplay::EnableTextureWrapping(bool b)
void RageDisplay::SetTextureWrapping( bool b )
{
GLenum mode = b? GL_REPEAT:GL_CLAMP;
GLenum mode = b ? GL_REPEAT : GL_CLAMP;
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, mode );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, mode );
}
@@ -986,7 +996,7 @@ void RageDisplay::SetMaterial(
glMaterialf( GL_FRONT, GL_SHININESS, shininess );
}
void RageDisplay::EnableLighting(bool b)
void RageDisplay::SetLighting( bool b )
{
if( b ) glEnable( GL_LIGHTING );
else glDisable( GL_LIGHTING );
@@ -1016,4 +1026,12 @@ void RageDisplay::SetLightDirectional(
glLightfv(GL_LIGHT0, GL_POSITION, position);
glPopMatrix();
}
}
void RageDisplay::SetBackfaceCull( bool b )
{
if( b )
glEnable( GL_CULL_FACE );
else
glDisable( GL_CULL_FACE );
}
+12 -10
View File
@@ -22,6 +22,7 @@ struct RageVertex;
const int REFRESH_DEFAULT = 0;
struct oglspecs_t;
class RageDisplay
{
friend class RageTexture;
@@ -58,17 +59,19 @@ public:
void PostMultMatrix( const RageMatrix &f );
void PreMultMatrix( const RageMatrix &f );
void SetBlendMode( BlendMode mode );
void SetTexture( RageTexture* pTexture );
void SetTextureModeModulate();
void SetTextureModeGlow(GlowMode m = GLOW_WHITEN );
void SetBlendModeNormal();
void SetBlendModeAdd();
bool ZBufferEnabled() const;
void EnableZBuffer();
void DisableZBuffer();
void EnableTextureWrapping(bool b=true);
void SetTextureModeGlow( GlowMode m = GLOW_WHITEN );
void SetTextureWrapping( bool b );
bool IsZBufferEnabled() const;
void SetZBuffer( bool b );
void ClearZBuffer();
void SetBackfaceCull( bool b );
void SetMaterial(
float emissive[4],
float ambient[4],
@@ -77,7 +80,7 @@ public:
float shininess
);
void EnableLighting(bool b=true);
void SetLighting( bool b );
void SetLightOff( int index );
void SetLightDirectional(
int index,
@@ -119,7 +122,6 @@ public:
protected:
void AddVerts( const RageVertex v[], int iNumVerts );
void SetBlendMode(int src, int dst);
void SetupOpenGL();
void SetupExtensions();
void SetViewport(int shift_left, int shift_down);
+2 -1
View File
@@ -11,11 +11,12 @@
-----------------------------------------------------------------------------
*/
/* This is shared between Actor and RageDisplay. I don't want to put this in
/* These are shared between Actor and RageDisplay. I don't want to put this in
* Actor (because Rage shouldn't touch Actor) and I don't want to have Actor.h
* depend on RageDisplay (since that'd boost RDisplay.h a lot), so let's just
* put this here. */
enum GlowMode { GLOW_BRIGHTEN, GLOW_WHITEN };
enum BlendMode { BLEND_NORMAL, BLEND_ADD, BLEND_NO_EFFECT };
struct RageVector2
{
-103
View File
@@ -1,103 +0,0 @@
/*
* This is a demonstration 3d object. I created this to give some basic
* code that sets up normal 3d object rendering. (The Space code sets
* up perspective and then renders 2d, which is different.) This actor
* should be positioned just like any other actor, calling SetX and SetY
* in the parent; that position will become the center of the frustum.
*/
#include "global.h"
#include "Sample3dObject.h"
#include "RageDisplay.h"
#include <math.h>
#include "SDL.h"
#include "SDL_opengl.h"
Sample3dObject::Sample3dObject()
{
rot = 0;
}
void Sample3dObject::Update( float fDeltaTime )
{
rot += fDeltaTime * 360.f;
rot = float(fmod(rot, 360.f));
}
/* One note about rendering: you get a 640x480 viewport to render in, centered
* on the location the actor is set to. That means that if the center isn't
* the center of the real screen, part of the view is offscreen and there's
* a portion of the screen you can't render to. If you want to render things
* like fullscreen background animations (characters), call SetX(CENTER_X) on
* and SetY(CENTER_Y) on the object so it gets the whole screen.
*/
void Sample3dObject::DrawPrimitives()
{
/* If this is a sub-object (3d object within a 3d object), this won't
* actually do anything: */
DISPLAY->EnterPerspective(60);
DISPLAY->SetTexture(NULL);
DISPLAY->EnableZBuffer();
glColor4f(1,1,1,1);
glPushMatrix();
/* By default, 0,0,0 is the center of the object, at the location the actor
* is set to. We have to translate away from the viewpoint (negative Z)
* to get away from the viewer (and in front of the near clip plane). */
glTranslatef (0,0,-5);
{ /* Standard ugly OpenGL lighting stuff. */
GLfloat mat_ambient[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat mat_specular[] = { 1.0, 1.0, 1.0, 1.0 };
GLfloat light_position[] = { 0.0, 0.0, 0.0, 1.0 };
GLfloat lm_ambient[] = { 0.3f, 0.3f, 0.3f, 1.0f };
glMaterialfv(GL_FRONT, GL_AMBIENT, mat_ambient);
glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular);
glMaterialf(GL_FRONT, GL_SHININESS, 100.0);
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lm_ambient);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
}
GLfloat sphere_diffuse[] = { 0.7f, 0.0f, 0.7f, 1.0f };
glMaterialfv(GL_FRONT, GL_DIFFUSE, sphere_diffuse);
GLUquadricObj *quadObj = gluNewQuadric();
gluQuadricDrawStyle(quadObj, GLenum(GLU_FILL));
gluQuadricNormals(quadObj, GLenum(GLU_SMOOTH));
glRotatef (rot, 0.0, 1.0, 0.0);
glPushMatrix();
glTranslatef (1,0,0);
gluSphere(quadObj, .25, 8, 16);
glPopMatrix();
glPushMatrix();
glTranslatef (-1,0,0);
gluSphere(quadObj, .35, 8, 16);
glPopMatrix();
gluDeleteQuadric(quadObj);
glPopMatrix();
DISPLAY->ExitPerspective();
DISPLAY->DisableZBuffer();
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
}
/*
* Copyright (c) 2002 by the person(s) listed below. All rights reserved.
*
* Glenn Maynard
*/
-23
View File
@@ -1,23 +0,0 @@
#ifndef SAMPLE_3D_OBJECT
#define SAMPLE_3D_OBJECT
#include "ActorFrame.h"
class Sample3dObject: public ActorFrame
{
float rot;
public:
Sample3dObject();
void Update( float fDeltaTime );
void DrawPrimitives();
};
#endif
/*
* Copyright (c) 2002 by the person(s) listed below. All rights reserved.
*
* Glenn Maynard
*/
+1
View File
@@ -28,6 +28,7 @@
#include "Notes.h"
#include "RageTimer.h"
#include "ActorUtil.h"
#include "RageTextureManager.h"
#define SCROLLING_LIST_X THEME->GetMetricF("ScreenEz2SelectMusic","ScrollingListX")
#define SCROLLING_LIST_Y THEME->GetMetricF("ScreenEz2SelectMusic","ScrollingListY")
+2 -2
View File
@@ -62,7 +62,7 @@ void ScreenSandbox::Update( float fDeltaTime )
void ScreenSandbox::DrawPrimitives()
{
DISPLAY->EnableLighting( true );
DISPLAY->SetLighting( true );
DISPLAY->SetLightDirectional(
0,
RageColor(0,0,0,0),
@@ -73,7 +73,7 @@ void ScreenSandbox::DrawPrimitives()
Screen::DrawPrimitives();
DISPLAY->SetLightOff( 0 );
DISPLAY->EnableLighting( false );
DISPLAY->SetLighting( false );
}
void ScreenSandbox::MenuLeft( PlayerNumber pn )
+14 -3
View File
@@ -32,7 +32,8 @@
#include "Notes.h"
#include "ActorUtil.h"
#include "RageDisplay.h"
#include "RageTextureManager.h"
const int NUM_SCORE_DIGITS = 9;
@@ -69,9 +70,17 @@ ScreenSelectMusic::ScreenSelectMusic() : Screen("ScreenSelectMusic")
m_MusicWheel.SetName( "Wheel" );
this->AddChild( &m_MusicWheel );
m_sprBannerMask.SetName( "Banner" ); // use the same metrics and animation as Banner
m_sprBannerMask.Load( THEME->GetPathToG("ScreenSelectMusic banner mask") );
m_sprBannerMask.SetBlendMode( BLEND_NO_EFFECT ); // don't draw to color buffer
m_sprBannerMask.SetUseZBuffer( true ); // do draw to the zbuffer
m_sprBannerMask.SetZ( m_sprBannerMask.GetZ()+0.05f );
this->AddChild( &m_sprBannerMask );
// this is loaded SetSong and TweenToSong
m_Banner.SetName( "Banner" );
m_Banner.SetCroppedSize( BANNER_WIDTH, BANNER_HEIGHT );
m_Banner.SetUseZBuffer( true ); // do have to pass the z test
this->AddChild( &m_Banner );
m_sprBannerFrame.SetName( "BannerFrame" );
@@ -202,8 +211,9 @@ void ScreenSelectMusic::DrawPrimitives()
void ScreenSelectMusic::TweenOnScreen()
{
SET_XY_AND_ON_COMMAND( m_sprBannerFrame );
SET_XY_AND_ON_COMMAND( m_sprBannerMask );
SET_XY_AND_ON_COMMAND( m_Banner );
SET_XY_AND_ON_COMMAND( m_sprBannerFrame );
SET_XY_AND_ON_COMMAND( m_BPMDisplay );
SET_XY_AND_ON_COMMAND( m_sprStage );
SET_XY_AND_ON_COMMAND( m_sprCDTitle );
@@ -237,8 +247,9 @@ void ScreenSelectMusic::TweenOnScreen()
void ScreenSelectMusic::TweenOffScreen()
{
OFF_COMMAND( m_sprBannerFrame );
OFF_COMMAND( m_sprBannerMask );
OFF_COMMAND( m_Banner );
OFF_COMMAND( m_sprBannerFrame );
OFF_COMMAND( m_BPMDisplay );
OFF_COMMAND( m_sprStage );
OFF_COMMAND( m_sprCDTitle );
+2 -1
View File
@@ -60,8 +60,9 @@ protected:
MenuElements m_Menu;
Sprite m_sprBannerFrame;
Sprite m_sprBannerMask;
FadingBanner m_Banner;
Sprite m_sprBannerFrame;
BPMDisplay m_BPMDisplay;
Sprite m_sprStage;
Sprite m_sprCDTitle;
+7 -18
View File
@@ -264,7 +264,7 @@ void Sprite::DrawPrimitives()
case align_top: quadVerticies.top = 0; quadVerticies.bottom = m_size.y; break;
case align_middle: quadVerticies.top = -m_size.y/2; quadVerticies.bottom = m_size.y/2; break;
case align_bottom: quadVerticies.top = -m_size.y; quadVerticies.bottom = 0; break;
default: ASSERT( false );
default: ASSERT(0);
}
@@ -276,28 +276,24 @@ void Sprite::DrawPrimitives()
DISPLAY->SetTexture( m_pTexture );
// Must call this after setting the texture or else texture
// parameters have no effect.
Actor::SetRenderStates(); // set Actor-specified render states
if( m_pTexture )
{
float TexCoords[8];
GetActiveTexCoords(TexCoords);
TexCoordsFromArray(v, TexCoords);
DISPLAY->EnableTextureWrapping(m_bTextureWrapping);
}
DISPLAY->SetTextureModeModulate();
if( m_bBlendAdd )
DISPLAY->SetBlendModeAdd();
else
DISPLAY->SetBlendModeNormal();
/* Draw if we're not fully transparent or the zbuffer is enabled (which ignores
* alpha). */
/* Draw if we're not fully transparent */
if( m_temp.diffuse[0].a > 0 ||
m_temp.diffuse[1].a > 0 ||
m_temp.diffuse[2].a > 0 ||
m_temp.diffuse[3].a > 0 ||
DISPLAY->ZBufferEnabled() )
m_temp.diffuse[3].a > 0 )
{
//////////////////////
// render the shadow
@@ -311,13 +307,6 @@ void Sprite::DrawPrimitives()
DISPLAY->PopMatrix();
}
/* If the texture doesn't have alpha, and we're not changing alpha in diffuse,
* don't bother to blend when doing the diffuse pass. */
/* I'm not sure this actually helps anywhere.
if(m_pTexture && !m_bBlendAdd && m_pTexture->GetActualID().iAlphaBits == 0 &&
m_temp.diffuse[0].a + m_temp.diffuse[1].a + m_temp.diffuse[2].a + m_temp.diffuse[3].a == 4)
glDisable(GL_BLEND);
*/
//////////////////////
// render the diffuse pass
//////////////////////
+5 -13
View File
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="StepMania" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# Microsoft Developer Studio Generated Build File, Format Version 60000
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
@@ -57,10 +57,10 @@ LINK32=link.exe
# SUBTRACT LINK32 /verbose /pdb:none
# Begin Special Build Tool
IntDir=.\../Release6
TargetDir=\Stepmania\stepmania
TargetDir=\stepmania\stepmania
TargetName=StepMania
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -92,10 +92,10 @@ LINK32=link.exe
# SUBTRACT LINK32 /verbose /profile /pdb:none /incremental:no /nodefaultlib
# Begin Special Build Tool
IntDir=.\../Debug6
TargetDir=\Stepmania\stepmania
TargetDir=\stepmania\stepmania
TargetName=StepMania-debug
SOURCE="$(InputPath)"
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PreLink_Cmds=disasm\verinc cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
PostBuild_Cmds=disasm\mapconv $(IntDir)\$(TargetName).map $(TargetDir)\StepMania.vdi ia32.vdi
# End Special Build Tool
@@ -1028,14 +1028,6 @@ SOURCE=.\Quad.h
# End Source File
# Begin Source File
SOURCE=.\Sample3dObject.cpp
# End Source File
# Begin Source File
SOURCE=.\Sample3dObject.h
# End Source File
# Begin Source File
SOURCE=.\Sprite.cpp
# End Source File
# Begin Source File
-6
View File
@@ -1217,12 +1217,6 @@ cl /Zl /nologo /c verstub.cpp /Fo$(IntDir)\
<File
RelativePath="OptionsCursor.h">
</File>
<File
RelativePath="Sample3dObject.cpp">
</File>
<File
RelativePath="Sample3dObject.h">
</File>
<File
RelativePath="ScrollBar.cpp">
</File>