Skip to content

Commit

Permalink
インスタンス数が多すぎるときに落ちる不具合を無理やり修正
Browse files Browse the repository at this point in the history
  • Loading branch information
effekseer committed Dec 12, 2015
1 parent e941728 commit 92af2f2
Showing 1 changed file with 14 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,21 @@ class StandardRenderer

void* data = nullptr;

vb->RingBufferLock(vertexCaches.size(), offsetSize, data);
if (vb->RingBufferLock(vertexCaches.size(), offsetSize, data))
{
assert(data != nullptr);
memcpy(data, vertexCaches.data(), vertexCaches.size());
vb->Unlock();
}
else
{
// 現状、描画するインスタンス数が多すぎる場合は描画しなくしている
vertexCaches.clear();
return;
}

memcpy(data, vertexCaches.data(), vertexCaches.size());
vertexCaches.clear();

vb->Unlock();
}

RenderStateBase::State& state = m_renderer->GetRenderState()->Push();
Expand Down Expand Up @@ -260,10 +269,11 @@ class StandardRenderer
}
else
{
int32_t spriteCount = vertexSize / sizeof(VERTEX) / 4;
m_renderer->SetVertexBuffer(m_renderer->GetVertexBuffer(), sizeof(VERTEX));
m_renderer->SetIndexBuffer(m_renderer->GetIndexBuffer());
m_renderer->SetLayout(shader_);
m_renderer->DrawSprites(vertexSize / sizeof(VERTEX) / 4, offsetSize / sizeof(VERTEX));
m_renderer->DrawSprites(spriteCount, offsetSize / sizeof(VERTEX));
}

m_renderer->EndShader(shader_);
Expand Down

0 comments on commit 92af2f2

Please sign in to comment.