|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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 .. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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 |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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..
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 |
|
|
Storm
Joined: 11 Apr 2006 Posts: 742
|
Posted: 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 |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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 |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: 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.
Bet labi, pietiks. Viss tāpat skaidrs - jāizlasa grāmata līdz galam. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
snake5 Indago dalībnieks
Joined: 27 Jun 2007 Posts: 2590
|
Posted: 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"
Varbūt pateiksi, uz kāda datora tev tas dēlis ar 4 gaismām tiek renderēts? |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: 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 |
|
|
|
|
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
|