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:
parent
39da91bb93
commit
d5412d30e1
|
@ -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()
|
||||
|
|
|
@ -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];
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user