Jump to content



CloneMesh()

  • You cannot reply to this topic
5 replies to this topic

#1 Jeason   Members   -  Reputation: 95

Like
0Likes
Like

Posted 24 February 2012 - 04:18 AM

I load a mesh from Xfile using CDXUTXfileMesh::Create. Then i clone the mesh using CloneMesh( D3DXMESH_WRITEONLY ).

Which memory pool does the new mesh resides, POOL_MANAGED or POOL_DEFAULT?Posted Image

Ad:

#2 Tom KQT   Members   -  Reputation: 236

Like
0Likes
Like

Posted 24 February 2012 - 07:07 AM

You can specify the memory pool in the first parameter, you can write for example:
CloneMesh(D3DXMESH_MANAGED | D3DXMESH_WRITEONLY, blablabla....)

#3 programci_84   Members   -  Reputation: 318

Like
1Likes
Like

Posted 25 February 2012 - 01:18 AM

D3DXMESH_MANAGED means D3DPOOL_MANAGED for vertex and index buffer of the mesh. Like this one, D3DXMESH_WRITEONLY means D3DUSAGE_WRITEONLY for both vertex and index bufferof the mesh.

So, you can check DX docs for D3DUSAGE and D3DPOOL. Docs say about D3DUSAGE_WRITEONLY: "Buffers created with D3DPOOL_DEFAULT that do not specify D3DUSAGE_WRITEONLY might suffer a severe performance penalty."
There's no "hard", and "the impossible" takes just a little time.

#4 Jeason   Members   -  Reputation: 95

Like
0Likes
Like

Posted 27 February 2012 - 01:58 AM

Thank you, TomKQT and programci_84.

I know how to specify memory pool. But don't know if not specify memory pool, just giving only D3DUSAGE_WRITEONLY, which memory pool it resides.

I had found the sentence---"Buffers created with D3DPOOL_DEFAULT that do not specify D3DUSAGE_WRITEONLY might suffer a severe performance penalty.".
But I don't understand it well, does it mean if specify D3DUSAGE_WRITEONLY, the memory pool is D3DPOOL_DEFAULT?

maybe that's it meaning.Posted Image

#5 programci_84   Members   -  Reputation: 318

Like
1Likes
Like

Posted 27 February 2012 - 04:33 AM

View PostJeason, on 27 February 2012 - 01:58 AM, said:

I know how to specify memory pool. But don't know if not specify memory pool, just giving only D3DUSAGE_WRITEONLY, which memory pool it resides.
You've 2 memory pool parameters for D3DX Mesh functions: D3DXMESH_MANAGED and D3DXMESH_SYSTEMMEM. If you don't specify one of'em, the function will choose D3DPOOL_DEFAULT for both vertex and index buffer of the mesh. So, if you specify only D3DXMESH_WRITEONLY, buffers will reside default memory pool.

View PostJeason, on 27 February 2012 - 01:58 AM, said:

I had found the sentence---"Buffers created with D3DPOOL_DEFAULT that do not specify D3DUSAGE_WRITEONLY might suffer a severe performance penalty.".
But I don't understand it well, does it mean if specify D3DUSAGE_WRITEONLY, the memory pool is D3DPOOL_DEFAULT?

maybe that's it meaning.Posted Image
As far as I understand, the sentence says: "Unless you specify D3DUSAGE_WRITEONLY, D3DPOOL_DEFAULT is a bad choice for memory pool. i.e. D3DPOOL_DEFAULT works well with only D3DUSAGE_WRITEONLY".

hth.
-R
There's no "hard", and "the impossible" takes just a little time.

#6 Jeason   Members   -  Reputation: 95

Like
0Likes
Like

Posted 28 February 2012 - 07:55 PM

Thank you, programci_84!

You have given a good lesson to me.Posted Image






We are working on generating results for this topic
PARTNERS