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

ID3DXSprite i point sprite

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

[ Pregleda: 1148 | Odgovora: 4 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1401
212.62.49.*

ICQ: 246436949


Profil

icon ID3DXSprite i point sprite08.09.2004. u 20:15

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?)?
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
08.09.2004. u 20:15 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1401
212.62.47.*

ICQ: 246436949


Profil

icon Re: ID3DXSprite i point sprite08.09.2004. u 22:27
32bitna slika pomaze :)
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
08.09.2004. u 22:27 

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1401
212.62.47.*

ICQ: 246436949


Profil

icon Re: ID3DXSprite i point sprite09.09.2004. u 16:39
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?
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
09.09.2004. u 16:39 

Reljam
Relja Markovic
Seattle, WA

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

Sajt: www.linkedin.com/in/relja..


Profil

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

Srki_82
Srdjan Tot
Me @ My Home
Ljubljana

Član broj: 28226
Poruke: 1401
212.62.47.*

ICQ: 246436949


Profil

icon Re: ID3DXSprite i point sprite09.09.2004. u 18:03
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.
DirectX na srpskom | GLScene na srpskom

There are only 10 types of people in this world; those who understand binary and those who don't.
09.09.2004. u 18:03 

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

[ Pregleda: 1148 | Odgovora: 4 ]

Postavi temu Odgovori

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