mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-04 10:03:36 +00:00
Correct depth buffer removal:
if depth buffer removed, clear pointers on it for all frame buffers.
This commit is contained in:
parent
fbbbe147c6
commit
c504b9b216
|
@ -282,6 +282,7 @@ void DepthBufferList::removeBuffer(u32 _address )
|
|||
{
|
||||
for (DepthBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter)
|
||||
if (iter->m_address == _address) {
|
||||
frameBufferList().clearDepthBuffer(&(*iter));
|
||||
m_list.erase(iter);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -716,6 +716,15 @@ void FrameBufferList::attachDepthBuffer()
|
|||
assert(checkFBO());
|
||||
}
|
||||
|
||||
void FrameBufferList::clearDepthBuffer(DepthBuffer * _pDepthBuffer)
|
||||
{
|
||||
for (FrameBuffers::iterator iter = m_list.begin(); iter != m_list.end(); ++iter) {
|
||||
if (iter->m_pDepthBuffer == _pDepthBuffer) {
|
||||
iter->m_pDepthBuffer = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FrameBuffer_Init()
|
||||
{
|
||||
frameBufferList().init();
|
||||
|
|
|
@ -66,6 +66,7 @@ public:
|
|||
void removeBuffer(u32 _address);
|
||||
void removeBuffers(u32 _width);
|
||||
void attachDepthBuffer();
|
||||
void clearDepthBuffer(DepthBuffer * _pDepthBuffer);
|
||||
FrameBuffer * findBuffer(u32 _startAddress);
|
||||
FrameBuffer * findTmpBuffer(u32 _address);
|
||||
FrameBuffer * getCurrent() const {return m_pCurrent;}
|
||||
|
|
Loading…
Reference in New Issue
Block a user