Particles demo!
http://www.mediafire.com/download.php?mh5zynnvyxo
Up next is either tile maps or render targets.
Oh, and if anyone's curious here's the code for that demo using my framework:
#include "BluGameEngine.h"
float X = 0.0;
float Y = 0.0;
BluTexture* AsteroidTexture;
BluTexture* StarTexture;
BluTexture* ParticleTexture;
BluSprite* Asteroids[100];
BluSprite* Stars[100];
BluParticleEmitter* Emitter;
BluFont* Font;
void bluApp()
{
bluDisplay(bluDesktopWidth(), bluDesktopHeight(), false);
bluSetCursorVisible(false);
AsteroidTexture = new BluTexture("Asteroid.bmp", BluColor(255, 255, 0, 255));
StarTexture = new BluTexture("Star.bmp", BluColor(255, 255, 0, 255));
ParticleTexture = new BluTexture("Particle.png", BluColor(255, 0, 0, 0));
Emitter = new BluParticleEmitter(ParticleTexture);
Emitter->setPosition(512.0f, 300.0f);
Emitter->setVelocity(0.0f, 0.15f);
Emitter->setAcceleration(0.0f, -0.0005f);
Emitter->setLifetime(1000);
Emitter->setDelay(5);
Emitter->setDiffuse(BluColor(255, 255, 200, 0), BluColor(0, 255, 70, 0));
Emitter->setScale(0.5f, 3.0f);
Emitter->setEmissionCount(4);
Font = new BluFont("Arial", 12, 500, 0, 1);
for (int I = 0; I < 100; I++)
{
Asteroids[I] = new BluSprite(AsteroidTexture, 8, 8);
Asteroids[I]->play(1, 64);
Asteroids[I]->setDelay(20);
Asteroids[I]->setPos(rand() % bluDisplayWidth(), rand() % bluDisplayHeight());
Asteroids[I]->setDepth(((float)(rand() % 1000)) / 1000.0f);
Asteroids[I]->setScale(1.0f, 1.0f);
Asteroids[I]->setScalingDepth(true);
}
for (int I = 0; I < 100; I++)
{
Stars[I] = new BluSprite(StarTexture, 1, 1);
Stars[I]->setPos(rand() % bluDisplayWidth(), rand() % bluDisplayHeight());
Stars[I]->setDepth(((float)(rand() % 1000)) / 1000.0f);
Stars[I]->setScale(1.0f, 1.0f);
Stars[I]->setScalingDepth(true);
}
Asteroids[0]->setDepth(1.0f);
Asteroids[0]->setScalingDepth(false);
while (bluRunning())
{
while (bluMessageExist())
{
bluRemoveMessage();
}
if (bluKeyState(DIK_ESCAPE))
bluStop();
X += bluMouseMoveX();
Y += bluMouseMoveY();
bluSetSpriteCam(X, Y);
Emitter->setPosition(X + bluDisplayWidth() / 2, Y + bluDisplayHeight() / 2);
Emitter->update();
bluClear(BluColor(255, 0, 20, 50));
bluBegin();
bluBeginSprites();
for (int I = 0; I < 100; I++)
{
Asteroids[I]->draw();
Stars[I]->draw();
}
bluEndSprites();
bluDrawParticles();
bluEnd();
Font->text(0, 20, 0, bluStr(bluFPS()), BluColor(255, 255, 255, 255));
bluPresent(NULL);
bluSync();
}
return;
}
EDIT: I've just added the ability to render to multiple windows using multiple swap chains but I can't post a demo right now cause I have to go to bed. So I'll try and get one up tomorrow.
i like orange