Commit af86f539 authored by hybrid's avatar hybrid

Avoid access to StencilBuffer if it is non-existent.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@3487 dfc29bdd-3216-0410-991c-e03cc46cb475
parent d1a4b288
......@@ -2649,16 +2649,19 @@ void CBurningVideoDriver::drawStencilShadowVolume(const core::vector3df* triangl
void CBurningVideoDriver::drawStencilShadow(bool clearStencilBuffer, video::SColor leftUpEdge,
video::SColor rightUpEdge, video::SColor leftDownEdge, video::SColor rightDownEdge)
{
if (!StencilBuffer)
return;
// draw a shadow rectangle covering the entire screen using stencil buffer
const u32 h = RenderTargetSurface->getDimension().Height;
const u32 w = RenderTargetSurface->getDimension().Width;
tVideoSample *dst;
u32 *stencil;
u32* const stencilBase=(u32*) StencilBuffer->lock();
for ( u32 y = 0; y < h; ++y )
{
dst = (tVideoSample*)RenderTargetSurface->lock() + ( y * w );
stencil = (u32*) StencilBuffer->lock() + ( y * w );
stencil = stencilBase + ( y * w );
for ( u32 x = 0; x < w; ++x )
{
......
......@@ -110,14 +110,12 @@ CTRStencilShadow::CTRStencilShadow(CBurningVideoDriver* driver)
}
/*!
*/
void CTRStencilShadow::setParam ( u32 index, f32 value)
{
u32 val = (u32) value;
// glStencilOp (fail,zfail,zpass
if ( index == 1 && val == 1 )
{
......@@ -128,14 +126,14 @@ void CTRStencilShadow::setParam ( u32 index, f32 value)
{
fragmentShader = &CTRStencilShadow::fragment_zfail_decr;
}
}
/*!
*/
void CTRStencilShadow::fragment_zfail_decr ()
{
if (!Stencil)
return;
//tVideoSample *dst;
#ifdef USE_ZBUFFER
......@@ -150,7 +148,6 @@ void CTRStencilShadow::fragment_zfail_decr ()
s32 xEnd;
s32 dx;
#ifdef SUBTEXEL
f32 subPixel;
#endif
......@@ -285,13 +282,14 @@ void CTRStencilShadow::fragment_zfail_decr ()
line.l[0][0] += slopeL[0];
#endif
}
}
/*!
*/
void CTRStencilShadow::fragment_zfail_incr ()
void CTRStencilShadow::fragment_zfail_incr()
{
if (!Stencil)
return;
//tVideoSample *dst;
#ifdef USE_ZBUFFER
......@@ -396,12 +394,10 @@ void CTRStencilShadow::fragment_zfail_incr ()
stencil = (u32*) Stencil->lock() + ( line.y * RenderTarget->getDimension().Width ) + xStart;
#endif
#ifdef INVERSE_W
f32 inversew;
#endif
#ifdef IPOL_C0
tFixPoint r3, g3, b3;
#endif
......@@ -441,7 +437,6 @@ void CTRStencilShadow::fragment_zfail_incr ()
line.l[0][0] += slopeL[0];
#endif
}
}
void CTRStencilShadow::drawTriangle ( const s4DVertex *a,const s4DVertex *b,const s4DVertex *c )
......@@ -520,7 +515,6 @@ void CTRStencilShadow::drawTriangle ( const s4DVertex *a,const s4DVertex *b,cons
f32 subPixel;
#endif
// rasterize upper sub-triangle
//if ( (f32) 0.0 != scan.invDeltaY[1] )
if ( F32_GREATER_0 ( scan.invDeltaY[1] ) )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment