示例#1
0
bool TextureWave::Init()
{
    if (!D3DApp::Init())
    {
        return false;
    }

    isLimitFrame = false;

    BuildGeometries();

    BuildShaders();

    BuildInputLayout();

    LoadTexture();

    BuildParamaters();

    BuildBlendState();

    return true;
}
示例#2
0
void FireBallParticles::Init(FXMVECTOR initialPos, float fireballRadius, LPCWSTR texFilename, ID3D11Device* device, FireBallParticlesProperties p)
{
	SetProperties(p);

	mFireBallEffect = new ParticleEffect();
	mFireBallEffect->LoadEffect(L"FX/ParticleEffect.fx", device);

	Vertex::InitParticleVertLayout(device, mFireBallEffect->GetTech());

	BuildFireBallParticleVB(device);

	XMVECTOR vel;
	XMFLOAT3 fVel3;
	for (int i = 0; i < mProperties.numParticles; ++i)
	{
		FireBallParticle newParticle;
		vel = XMVector3Normalize(XMVectorSet(MathHelper::RandF(-1.0f, 1.0f), MathHelper::RandF(-1.0f, 1.0f), MathHelper::RandF(-1.0f, 1.0f), 0.0f)) * fireballRadius;
		XMStoreFloat3(&newParticle.pos, initialPos + vel);
		fVel3 = GetVelocity();
		vel = XMVector3Normalize(XMVectorSet(fVel3.x, fVel3.y, fVel3.z, 0.0f)) * fireballRadius;
		XMStoreFloat3(&newParticle.vel, vel * GetSpeedMultiplier());
		float pSize = GetSize();
		newParticle.size.x = pSize;
		newParticle.size.y = pSize;
		newParticle.age = 0.0f;
		newParticle.lifetime = GetLifetime();
		newParticle.tweenSegment = 0;
		mFireBallParticles.push_back(newParticle);
	}

	mParticlesShown = mProperties.numParticles;

	D3DX11CreateShaderResourceViewFromFile(device, texFilename, 0, 0, &mFBTexture, 0);

	BuildBlendState(device);
	BuildDSState(device);
}