no more black triangles when rendering cliffs

render cliffs made problems sometimes because not 
the whole visible surface was rendered if top left map cell point 
was not in camera view.
This commit is contained in:
titiger 2016-01-29 18:36:48 +01:00
parent 2cfb985441
commit 3de7c586c2
1 changed files with 17 additions and 3 deletions

View File

@ -9297,10 +9297,24 @@ VisibleQuadContainerCache & Renderer::getQuadCache( bool updateOnDirtyFrame,
}
}
else {
SurfaceCell *sc = map->getSurfaceCell(pos);
bool insideQuad = false;
// 2 as last param for CubeInFrustum to get rid of annoying black squares
bool insideQuad = CubeInFrustum(quadCache.frustumData, sc->getVertex().x, sc->getVertex().y, sc->getVertex().z, 2);
if( !insideQuad) {
SurfaceCell *sc = map->getSurfaceCell(pos.x, pos.y);
insideQuad = CubeInFrustum(quadCache.frustumData, sc->getVertex().x, sc->getVertex().y, sc->getVertex().z, 0);
}
if( !insideQuad) {
SurfaceCell *sc = map->getSurfaceCell(pos.x+1, pos.y);
insideQuad = CubeInFrustum(quadCache.frustumData, sc->getVertex().x, sc->getVertex().y, sc->getVertex().z, 0);
}
if( !insideQuad) {
SurfaceCell *sc = map->getSurfaceCell(pos.x, pos.y+1);
insideQuad = CubeInFrustum(quadCache.frustumData, sc->getVertex().x, sc->getVertex().y, sc->getVertex().z, 0);
}
if( !insideQuad) {
SurfaceCell *sc = map->getSurfaceCell(pos.x+1, pos.y+1);
insideQuad = CubeInFrustum(quadCache.frustumData, sc->getVertex().x, sc->getVertex().y, sc->getVertex().z, 0);
}
if(insideQuad == true) {
quadCache.visibleScaledCellList.push_back(pos);