mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +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;
|
return;
|
||||||
_prepareDrawTriangle(true);
|
_prepareDrawTriangle(true);
|
||||||
glDrawArrays(GL_TRIANGLES, 0, _numVtx);
|
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()
|
void OGLRender::drawTriangles()
|
||||||
|
|
|
@ -169,9 +169,16 @@ void renderTriangles(const SPVertex * _pVertices, const GLubyte * _pElements, u3
|
||||||
SPVertex vdata[6];
|
SPVertex vdata[6];
|
||||||
for (u32 i = 0; i < _numElements; i += 3) {
|
for (u32 i = 0; i < _numElements; i += 3) {
|
||||||
u32 orbits = 0;
|
u32 orbits = 0;
|
||||||
for (u32 j = 0; j < 3; ++j) {
|
if (_pElements != nullptr) {
|
||||||
vsrc[j] = &_pVertices[_pElements[i + j]];
|
for (u32 j = 0; j < 3; ++j) {
|
||||||
orbits |= vsrc[j]->clip;
|
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];
|
vsrc[3] = vsrc[0];
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user