ShivaVG: Support for pseudo non-zero fillrule
This commit is contained in:
parent
1b55076897
commit
a25bd06138
@ -332,8 +332,20 @@ VG_API_CALL void vgDrawPath(VGPath path, VGbitfield paintModes)
|
|||||||
|
|
||||||
/* Tesselate into stencil */
|
/* Tesselate into stencil */
|
||||||
glEnable(GL_STENCIL_TEST);
|
glEnable(GL_STENCIL_TEST);
|
||||||
|
|
||||||
|
if( context->fillRule == VG_EVEN_ODD )
|
||||||
|
{
|
||||||
glStencilFunc(GL_ALWAYS, 0, 0);
|
glStencilFunc(GL_ALWAYS, 0, 0);
|
||||||
glStencilOp(GL_INVERT, GL_INVERT, GL_INVERT);
|
glStencilOp(GL_INVERT, GL_INVERT, GL_INVERT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// pseudo non-zero fill rule. Fill everything at least covered once, don't
|
||||||
|
// care for possible decrements.
|
||||||
|
// TODO implement real non-zero fill-rule
|
||||||
|
glStencilFunc(GL_ALWAYS, 1, 1);
|
||||||
|
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
|
||||||
|
}
|
||||||
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
|
||||||
shDrawVertices(p, GL_TRIANGLE_FAN);
|
shDrawVertices(p, GL_TRIANGLE_FAN);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user