Multi pass
This commit is contained in:
@@ -69,11 +69,10 @@ bool RenderTargetPool::ReserveTemporaryTargets(
|
||||
GLenum pixelType,
|
||||
std::string& error)
|
||||
{
|
||||
if (!mTemporaryTargets.empty())
|
||||
{
|
||||
error = "Temporary render targets were already initialized.";
|
||||
return false;
|
||||
}
|
||||
if (mTemporaryTargets.size() == count)
|
||||
return true;
|
||||
|
||||
DestroyTemporaryTargets();
|
||||
|
||||
mTemporaryTargets.resize(count);
|
||||
for (std::size_t index = 0; index < mTemporaryTargets.size(); ++index)
|
||||
@@ -105,6 +104,18 @@ bool RenderTargetPool::ReserveTemporaryTargets(
|
||||
return true;
|
||||
}
|
||||
|
||||
void RenderTargetPool::DestroyTemporaryTargets()
|
||||
{
|
||||
for (RenderTarget& target : mTemporaryTargets)
|
||||
{
|
||||
if (target.framebuffer != 0)
|
||||
glDeleteFramebuffers(1, &target.framebuffer);
|
||||
if (target.texture != 0)
|
||||
glDeleteTextures(1, &target.texture);
|
||||
}
|
||||
mTemporaryTargets.clear();
|
||||
}
|
||||
|
||||
void RenderTargetPool::Destroy()
|
||||
{
|
||||
for (RenderTarget& target : mTargets)
|
||||
@@ -116,14 +127,7 @@ void RenderTargetPool::Destroy()
|
||||
target = RenderTarget();
|
||||
}
|
||||
|
||||
for (RenderTarget& target : mTemporaryTargets)
|
||||
{
|
||||
if (target.framebuffer != 0)
|
||||
glDeleteFramebuffers(1, &target.framebuffer);
|
||||
if (target.texture != 0)
|
||||
glDeleteTextures(1, &target.texture);
|
||||
}
|
||||
mTemporaryTargets.clear();
|
||||
DestroyTemporaryTargets();
|
||||
}
|
||||
|
||||
const RenderTarget& RenderTargetPool::Target(RenderTargetId id) const
|
||||
|
||||
Reference in New Issue
Block a user