1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-04 10:03:36 +00:00

Add support for software depth render to OGLRender::drawDMATriangles

This commit is contained in:
Sergey Lipskiy 2016-09-27 21:51:12 +07:00
parent 39da91bb93
commit d5412d30e1
2 changed files with 19 additions and 3 deletions

View File

@ -1327,6 +1327,15 @@ void OGLRender::drawDMATriangles(u32 _numVtx)
return;
_prepareDrawTriangle(true);
glDrawArrays(GL_TRIANGLES, 0, _numVtx);
if (config.frameBufferEmulation.enable != 0 &&
config.frameBufferEmulation.copyDepthToRDRAM == Config::cdSoftwareRender &&
gDP.otherMode.depthUpdate != 0) {
renderTriangles(triangles.dmaVertices.data(), nullptr, _numVtx);
FrameBuffer * pCurrentDepthBuffer = frameBufferList().findBuffer(gDP.depthImageAddress);
if (pCurrentDepthBuffer != nullptr)
pCurrentDepthBuffer->m_cleared = false;
}
}
void OGLRender::drawTriangles()

View File

@ -169,9 +169,16 @@ void renderTriangles(const SPVertex * _pVertices, const GLubyte * _pElements, u3
SPVertex vdata[6];
for (u32 i = 0; i < _numElements; i += 3) {
u32 orbits = 0;
for (u32 j = 0; j < 3; ++j) {
vsrc[j] = &_pVertices[_pElements[i + j]];
orbits |= vsrc[j]->clip;
if (_pElements != nullptr) {
for (u32 j = 0; j < 3; ++j) {
vsrc[j] = &_pVertices[_pElements[i + j]];
orbits |= vsrc[j]->clip;
}
} else {
for (u32 j = 0; j < 3; ++j) {
vsrc[j] = &_pVertices[i + j];
orbits |= vsrc[j]->clip;
}
}
vsrc[3] = vsrc[0];