Jump to content

  • Log In with Google      Sign In   
  • Create Account


Member Since 21 Mar 2012
Offline Last Active May 21 2015 11:45 AM

Topics I've Started

Calc maximum INNER AABB

15 March 2015 - 12:56 AM



I have a task to build maximum AABB (one or more) that will best fill the inside of a 3D model.
How to do it?
Need to build at least one AABB, and it's good.
If anyone has any ideas, and better some code, share please!!

Resource method Release() won't release memory

23 March 2014 - 11:22 PM

So, in tree(which process frustum culling), I call


void CRTreeStatic::ManageModelsResources(CCamera const *const &_pCamera) const
// some tree traversing and choosing pLOD

 if (MemStatus.dwMemoryLoad > 80)
  CModelResource::GetInstance()->UnloadModel((IModel *const)pLOD->GetModel());

After that, model will pushed to m_Unloading inside resource manager.
This is worker thread of resource manager:


void CModelResourceWorkedThread::WorkerThread()
while (1)
for (auto iModel : m_Unloading)
if (!iModel->IsOnLoading() && iModel->IsLoaded())

 After that, inside ClearGeometry():

void ClearGeometry()
Lock(); // mutex lock

m_bOnLoading = true;

for (auto iMesh : m_Meshes)

m_bIsLoaded = false; // atomic
m_bOnLoading = false; // atomic


Inside Mesh::ClearGeometry():

void ClearGeometry()

while (m_pVertexBuffer->Release())

m_pVertexBuffer = nullptr;

m_nVertices = 0;

for (auto iSplit : m_MaterialSplits)

Last command executs 100%. I have debugged it.
Buffer creation inside loader.cpp:

ZeroMemory(&bd, sizeof(bd));
bd.Usage = D3D11_USAGE_DEFAULT;
bd.ByteWidth = sizeof(CVertex)* pMesh->m_nVertices;
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = 0;

ZeroMemory(&InitData, sizeof(InitData));
InitData.pSysMem = pVertices;

if (pMesh->m_pVertexBuffer)
    printf("debugger doesn't stop here\n");

V_RETURN(pD3DDevice->CreateBuffer(&bd, &InitData, &pMesh->m_pVertexBuffer));

Why I release buffer in realtime?
Count of objects in scene is very big, and I have to unload and download part of them in realtime(because of RAM and GPU memory not rubber).
And memory doesn't deallocates! Used GPU memory and RAM only grows!
What happens? Why memory doesn't deallocates? So strange problem...