Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

ID3DXSprite i point sprite

[es] :: 3D programiranje :: ID3DXSprite i point sprite

[ Pregleda: 3044 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.49.*

ICQ: 246436949


+10 Profil

icon ID3DXSprite i point sprite08.09.2004. u 20:15 - pre 238 meseci
Koristim ID3DXSprite za prikazivanje point sprite-ova, ali imam problema sa teksturom koju koristim. To je 24b bmp slika na kojoj se nalaze nijanse sive boje... verovatno pretpostavljate za cega ona sluzi. Tamo gde je textura skroz bela pixel u point sprite treba da ima alpha vrednost 1, a kako je boja na texturi tamnija tako i alpha vrednost treba da opada. Kada postavim takvu texturu i iscrtam sprite textura se vidi takva kakva jeste... tj, tamo gde je bela, bela je, tamo gde je siva, siva je, tamo gde je crna crna je... pozadina se ne vidi ni kroz jedan deo sprite-a. Da li je moguce uraditi to sto zelim sa ID3DXSprite i kako (da li bi mozda pomoglo da koristim 32b texturu sa podacima o alpha vrednosti?)?
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: ID3DXSprite i point sprite08.09.2004. u 22:27 - pre 238 meseci
32bitna slika pomaze :)
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: ID3DXSprite i point sprite09.09.2004. u 16:39 - pre 238 meseci
Da bih promenio velicinu sprajta koristim scaling matricu, ali kad je postavim onda ona utice i na koordinate koje prosledim Draw funkciji... postoji li neki drugi nacin da se postavi velicina sprajta sa ID3DXSprite?
 
Odgovor na temu

Reljam
Relja Markovic
San Francisco

Član broj: 531
Poruke: 1793
*.client.comcast.net



+18 Profil

icon Re: ID3DXSprite i point sprite09.09.2004. u 17:01 - pre 238 meseci
Najverovatnije mnozis matrice u pogresnom redosledu. Pretpostavljam da koristis ID3DXSprite::SetTransfrom? Zakaci relevantan deo koda ovde (u poruku), pa da pogledamo.
 
Odgovor na temu

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1403
212.62.47.*

ICQ: 246436949


+10 Profil

icon Re: ID3DXSprite i point sprite09.09.2004. u 18:03 - pre 238 meseci
Deo koda koji iscrtava sprajtove:
Code:

void CMMParticleSystem::Draw( LPDIRECT3DDEVICE9 DEVICE )
{
    particle->Begin( D3DXSPRITE_ALPHABLEND );
    D3DSURFACE_DESC pDesc;
    texture->GetTexture()->GetLevelDesc( 0, &pDesc );
    D3DXMATRIXA16 scale;
    D3DXMatrixScaling( &scale, 1.0f / pDesc.Width * particlesize,
        1.0f / pDesc.Height * particlesize, 1.0f );
    particle->SetTransform( &scale );
    for( int i = 0; i < particlenum; ++i )
    {
        D3DXVECTOR3 pos = particles[i]->GetPosition();
        pos.x *= pDesc.Width / particlesize;
        pos.y *= pDesc.Height / particlesize;
        particle->Draw( texture->GetTexture(), NULL, NULL, &pos,
            particles[i]->GetColor() );
    };
    particle->End();
};


ovaj kod radi onako kako treba... koordinate su tacne bez obzira na velicinu sprajta, ali kada napisem ovako (kako sam prvi put uradio):
Code:

void CMMParticleSystem::Draw( LPDIRECT3DDEVICE9 DEVICE )
{
    particle->Begin( D3DXSPRITE_ALPHABLEND );
    D3DSURFACE_DESC pDesc;
    texture->GetTexture()->GetLevelDesc( 0, &pDesc );
    D3DXMATRIXA16 scale;
    D3DXMatrixScaling( &scale, 1.0f / pDesc.Width * particlesize,
        1.0f / pDesc.Height * particlesize, 1.0f );
    particle->SetTransform( &scale );
    for( int i = 0; i < particlenum; ++i )
    {
        particle->Draw( texture->GetTexture(), NULL, NULL,
            particles[i]->GetPosition(),
            particles[i]->GetColor() );
    };
    particle->End();
};


onda scale matrica pomera i koordinate sparjta.
 
Odgovor na temu

[es] :: 3D programiranje :: ID3DXSprite i point sprite

[ Pregleda: 3044 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.