Beispiel #1
0
void ShaderBlur::Apply( SDL_Surface* Target )
{
	// Keep render target (might not be applying shader to screen)
	SDL_Surface* r = spGetRenderTarget();

	SDL_Surface* t = spUniqueCopySurface( Target );
	
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );

	spSelectRenderTarget( t );
	spSetBlending( SP_ONE );
	spBlitSurface( 0, 0, -1, Target );
	spSetBlending( SP_ONE >> 2 );
	for( int y = -1; y <= 1; y++ )
	{
		for( int x = -1; x <= 1; x++ )
		{
			if( x != 0 && y != 0 )
			{
				spBlitSurface( x, y, -1, Target );
			}
		}
	}

	spSelectRenderTarget( Target );
	spSetBlending( SP_ONE );
	spBlitSurface( 0, 0, -1, t );

	spDeleteSurface( t );

	// Restore render target
	spSelectRenderTarget( r );
}
Beispiel #2
0
void TransitionFade::Render()
{
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );

	// Draw original source
	spSetBlending( SP_ONE );
	spBlitSurface( 0, 0, -1, SourceScreen );
	// Alpha it to the actual screen
	spSetBlending( Alpha );
	spBlitSurface( 0, 0, -1, TargetScreen );
	spSetBlending( SP_ONE );
}
Beispiel #3
0
void TransitionStrips::Render()
{
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );

	// Draw original source
	spBlitSurface( 0, 0, -1, SourceScreen );

	// Draw strips
	for( int i = 0; i < numStrips; i++ )
	{
		spBlitSurfacePart( i * stripWidth, 0, -1, TargetScreen, i * stripWidth, 0, stripWidth, speedList[i] * frameIndex );
	}
}
Beispiel #4
0
void TransitionFadeIn::Render()
{
	SDL_Surface* b = spGetWindowSurface();
	SDL_Surface* t = spUniqueCopySurface( b );

	// Fade from colour
	spClearTarget( SourceColour );

	// Buffer the next stages screen
	spSelectRenderTarget( t );
	Target->Render();
	spSelectRenderTarget( b );

	// Alpha it to the actual screen
	spSetHorizontalOrigin( SP_LEFT );
	spSetVerticalOrigin( SP_TOP );
	spSetBlending( Alpha );
	spBlitSurface( 0, 0, -1, t );
	spSetBlending( SP_ONE );

	spDeleteSurface( t );
}
Beispiel #5
0
void draw_function( void )
{
	//Cleaning the target (in this case the screen surface) with 0 (black).
	//In this case I don't clean the zBuffer, because I don't use it. ;-)
	//But you ARE able to use it, if you want!
	spResetZBuffer();
	spClearTarget( 34567 );


	//Set the origin:
	switch ( ( rotation >> 17 ) % 9 )
	{
	case 0:
		spSetHorizontalOrigin( SP_CENTER );
		spSetVerticalOrigin( SP_CENTER );
		break;
	case 1:
		spSetHorizontalOrigin( SP_LEFT );
		spSetVerticalOrigin( SP_CENTER );
		break;
	case 2:
		spSetHorizontalOrigin( SP_LEFT );
		spSetVerticalOrigin( SP_TOP );
		break;
	case 3:
		spSetHorizontalOrigin( SP_CENTER );
		spSetVerticalOrigin( SP_TOP );
		break;
	case 4:
		spSetHorizontalOrigin( SP_RIGHT );
		spSetVerticalOrigin( SP_TOP );
		break;
	case 5:
		spSetHorizontalOrigin( SP_RIGHT );
		spSetVerticalOrigin( SP_CENTER );
		break;
	case 6:
		spSetHorizontalOrigin( SP_RIGHT );
		spSetVerticalOrigin( SP_BOTTOM );
		break;
	case 7:
		spSetHorizontalOrigin( SP_CENTER );
		spSetVerticalOrigin( SP_BOTTOM );
		break;
	case 8:
		spSetHorizontalOrigin( SP_LEFT );
		spSetVerticalOrigin( SP_BOTTOM );
		break;
	}

	//Drawing the sprite in the middle of the screen
	spDrawSprite( screen->w / 2, screen->h / 2, -1, sprite );
	spDrawSprite( screen->w - 1, screen->h - 1, -1, sprite );
	spDrawSprite( screen->w - 1, 0, -1, sprite );
	spDrawSprite( 0, screen->h - 1, -1, sprite );
	spDrawSprite( 0, 0, -1, sprite );

	//mark the center
	//spEllipseBorder( screen->w / 2, screen->h / 2, -100, 60+spSin(rotation/2)/1000, 60+spCos(rotation/3)/1000, 20+spCos(rotation/7)/10000, 20+spSin(rotation/5)/10000, 0 );
	spEllipseBorder( screen->w / 2, screen->h / 2, -100, 6, 6, 2, 2, 0 );

	//Show it!
	spFlip();
}