dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Divi jautājumi par DirectX
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
 
dev.gamez.lv Forum Index -> Microsoft DirectX
View previous topic :: View next topic  
Author Message
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Fri Jan 23, 2009 12:35 pm    Post subject:

Tur nav nekādas problēmas.
Problēmas sākās tad, kad jāveido jauns mesh eksemplārs priekš ēnas, konkrēti 1. objektam. Tad jāveido tāds pats eksemplārs priekš 2. objekta.

Un pa vidu jaucas memory dalīšana katram šim eksemplāram.
Tādejādi radot lielāku haosu. Piemēram P_memory ir tikai viens un tieši tādu pašu izmanto arī otrs eksemplārs, jo pēc 1. objekta darbībām ar atmiņu, tas sāk dalīt atmiņu otram eksemplāram.

Tas, ko tu uzrakstīji, tas bija pirmais, ko izdarīju. Es jau teicu, ka ielikt 2 objektus scēnā nav problēmas.

Un tālāk vēl jāizveido shadow deklarācija tam mesh eksemplāram priekš ēnas.
Kā redzams, problēma rodas tur, ka nevar tā vienkārši uztaisīt funkciju, kas klonēs deklarācijas cik tev gribās (nu var jau, bet vēl nemāku).
Var jau būt, ka tas saucās **, jeb instance no instances.

-------
Rezultātā, ir jāuzraksta 2X vairāk koda.
Bet es vēl pētīšu. Wink
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 23, 2009 12:40 pm    Post subject:

Ko nozīmē "jāveido jauns mesh eksemplārs priekš ēnas"? Direct3D nemāku, bet šitā vai tad nevar?
Code:

DIRECTXMESH* jauns_mesh_prieksh_eenas;
D3DXCreateMesh(poligonu_skaits, virsotnju_skaits, opcijas, vertex_format, device, &jauns_mesh_prieksh_eenas);

jauns_mesh_prieksh_eenas.LockVertexBuffer(..., &p);
// aizpildi p.
// ...
jauns_mesh_prieksh_eenas.UnlockVertexBuffer();

// tas pats ar index buferi
// lock, ..., unlock


Jeb tu gribi dabūt identisku mešu ar tiem pašiem vertex/index buferim? Tad kāpēc kautkas ir jāklonē, un kāpēc nevar izmantot to pašu meša objektu.
Back to top
View user's profile Send e-mail
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Fri Jan 23, 2009 12:59 pm    Post subject:

Esmu tikai iesācējs DirectX-ā, tāpēc nevaru neko sīkāk paskaidrot.

Bet tev taču tas izveidotais mesh ir jāpavazā pa dažām funkcijām.
Tas shadow_mesh vēl prasa otru deklarāciju, jo pirmā taču neder.


Fuuu, laikam baucu auzās .... jāiet paēst pusdienas .. Wink
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Jan 23, 2009 2:42 pm    Post subject:

EDDY wrote:

Bet tev taču tas izveidotais mesh ir jāpavazā pa dažām funkcijām. (1)
Tas shadow_mesh vēl prasa otru deklarāciju, jo pirmā taču neder. (2)


1. ja jāpavazā, tad Lock'o vazājamā mesha vertex/index bufferus ar read only flagu. Uztaisi pirms tam meshu ar savu FVF, tad būs vienkāršāk nolasīt datus no mesha - zināsi, kurš elements kur atrodas - nebūs jāzīlē.
http://msdn.microsoft.com/en-us/library/bb172781(VS.85).aspx
2. Un kāda te problēma?
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 23, 2009 3:08 pm    Post subject:

Vai tad FVF neskaitās jau novecojis un neviens vairs to neiesaka lietot? Tā vietā lietojot Vertex Declaration'us.
Back to top
View user's profile Send e-mail
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Fri Jan 23, 2009 3:30 pm    Post subject:

Ar Vertex deklarācijām viss ir ok.

Rekur izgriezums no ShadowVolume.cpp:

Code:
 // Render the mesh
    V( pd3dDevice->SetVertexDeclaration( g_pMeshDecl ) );
    mWorldView = g_mWorldScaling * *g_MCamera.GetWorldMatrix() * *g_Camera.GetViewMatrix();
    mWorldViewProjection = mWorldView * *g_Camera.GetProjMatrix();
    V( g_pEffect->SetMatrix( "g_mWorldViewProjection", &mWorldViewProjection ) );
    V( g_pEffect->SetMatrix( "g_mWorldView", &mWorldView ) );
    V( g_pEffect->Begin( &cPasses, 0 ) );
    for( UINT p = 0; p < cPasses; ++p )
    {
        V( g_pEffect->BeginPass( p ) );
        ID3DXMesh *pMesh = g_Mesh.GetMesh();
        for( UINT i = 0; i < g_Mesh.m_dwNumMaterials; ++i )
        {
            V( g_pEffect->SetVector( "g_vMatColor", (D3DXVECTOR4*)&g_Mesh.m_pMaterials[i].Diffuse ) );
            if( g_Mesh.m_pTextures[i] )
                V( g_pEffect->SetTexture( "g_txScene", g_Mesh.m_pTextures[i] ) )
            else
                V( g_pEffect->SetTexture( "g_txScene", g_pDefaultTex ) );
            // The effect interface queues up the changes and performs them
            // with the CommitChanges call. You do not need to call CommitChanges if
            // you are not setting any parameters between the BeginPass and EndPass.
            V( g_pEffect->CommitChanges() );
            V( pMesh->DrawSubset( i ) );
        }
        V( g_pEffect->EndPass() );
    }
    V( g_pEffect->End() );


Ar to viss ir kārtībā. Te nav nekādas problēmas. Te vertex deklarāciju nav jāaiztiek. Pietiek tikai nomainīt p_Mesh un kādu citu, vai uz p_Mesh[i] un ielikt to i ciklā.

Rekur pilnais fails:

http://yy.lv/download.php?f=17273.

Uzliku apskatei bez Microsoft atļaujas.

Pievērsiet uzmanību vārdiem:

Code:


IDirect3DVertexDeclaration9* g_pShadowDecl = NULL;
ID3DXMesh*              g_pShadowMesh = NULL;   // The shadow volume mesh



Sanāk, ka ID3DXMesh un IDirect3DVertexDeclaration9 un arī CDXUTXFileMesh ir bāzes klases. Tātad mums jāsamiksē kopā 3 dažādas klases.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Fri Jan 23, 2009 3:54 pm    Post subject:

Kautkādas šausmas ar tevi... Par kādu miksēšanu tu te runā tagad?
Goda vārds es nesaprotu, ko tu nesaproti. Vai shadow volume algoritmu tu saproti? Ja jā, tad kur problēma to norealizēt. Ko tieši tu tur nevari? (atbilde "miksēt/klonēt/likt * pie objektiem" netiek ņemta par pilnu)
Back to top
View user's profile Send e-mail
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Fri Jan 23, 2009 4:06 pm    Post subject:

Es varu. Neesmu teicis, ka nevaru. Runa iet par pareizo pierakstu, lai nav jāraksta garās penteres. Sanāk, ja man jāizveido 5 atsevišķi X objekti, tad katram jādod gan sava shadow deklarācija, gan savs shadowmesh.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Fri Jan 23, 2009 4:22 pm    Post subject:

bubu wrote:
Vai tad FVF neskaitās jau novecojis un neviens vairs to neiesaka lietot? Tā vietā lietojot Vertex Declaration'us.

Novecojis vai nē, bet šādi ir vienkāršāk..
..citādāk ar D3DXCreateMesh atgriezto vertexu deklarāciju būs jālasa no pointera uz atmiņas gabalu un, kā zināms, ar pointeriem kļūdas var vienkāršāk salaist. It īpaši tādi mixeri kā EDDY.. Razz

EDDY wrote:
Sanāk, ja man jāizveido 5 atsevišķi X objekti, tad katram jādod gan sava shadow deklarācija, gan savs shadowmesh.

Ko tu tur miksē?
Code:
class CMesh
{
LPD3DXMESH pMesh;
LPD3DXMESH pShadowMesh;
...
};
Back to top
View user's profile Visit poster's website
Storm



Joined: 11 Apr 2006
Posts: 742

PostPosted: Fri Jan 23, 2009 5:06 pm    Post subject:

Viena lieta ka eddy nezin kas ir pointeris uz objektu iisi, to gan jau iemaciisies.

Bet lietot sitaada tipa eeas manupraat ir fail... Muusdienaas ir loti svariigi visu iespeejamo darbu novelt uz GPU, lai atslogotu CPU, bet nu tad kad tu pieliksi veel citas speeles daljas kuraam loti vaidzees CPU, tad jau pats paarveidosi uz shadow maps ;P
_________________
Izraadaas ka dazu dev.gamez.lv lietotaaju absurdaa ignorance meedz eksisteet arii augstaakas paakaapees : http://www.gamedev.net/community/forums/topic.asp?topic_id=411552
Back to top
View user's profile
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Mon Jan 26, 2009 9:13 am    Post subject:

Nu, priekš Sudoku dēlīša un 81 figūriņām un 4 gaismām man uzrādās ~50 FPS.

Nav daudz. :roll:

Zinu gan, kas ir pointers. Bet nezinu, kas ir pointers uz pointeri.
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Jan 26, 2009 10:28 am    Post subject:

Ja tu zini, kas ir fotogrāfija, tad kāpēc tu nezini, kas ir fotogrāfija no fotogrāfijas?
Back to top
View user's profile Send e-mail
EDDY



Joined: 07 Oct 2005
Posts: 1610
Location: Dzimtā zeme, Latvija

PostPosted: Mon Jan 26, 2009 11:22 am    Post subject:

Es zinu, kas ir fotogrāfija no fotogrāfijas. Tā saucas reprodukcija - tā mums arodskolā mācīja. Wink

Bet labi, pietiks. Viss tāpat skaidrs - jāizlasa grāmata līdz galam. Wink
_________________
Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday
Back to top
View user's profile
snake5
Indago dalībnieks
Indago dalībnieks


Joined: 27 Jun 2007
Posts: 2590

PostPosted: Mon Jan 26, 2009 4:34 pm    Post subject:

Pointeris ir kā rokturis: vari izgāzt durvis to nelietojot, vari atvērt tās ar rokturi, un vari pie roktura piestiprināt otru, lai durvis varētu atvērt no lielāka attāluma. :D

Quote:
Nu, priekš Sudoku dēlīša un 81 figūriņām un 4 gaismām man uzrādās ~50 FPS.

Eu bet man vienkārši texturēts 3stūris uz 5 fps.. ā, aizmirsu pateikt, lietoju "reference rasterizer" Very Happy
Varbūt pateiksi, uz kāda datora tev tas dēlis ar 4 gaismām tiek renderēts?
Back to top
View user's profile Visit poster's website
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Mon Jan 26, 2009 4:42 pm    Post subject:

Man gan tava rokturu analoģija šķiet dīvaina. Kā tas ir - izgāzt durvis bez roktura (kā tas iespaužās kodā bezpointeru gadījumā)? Tad jau drīzāk varētu teikt, ka pointeris ir kā koridors starp divām telpām. Un pointeris uz pointeri - kā nākamais koridors aiz pirmā uz nākamo telpu.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Microsoft DirectX All times are GMT + 2 Hours
Goto page Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next
Page 2 of 9

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group