draw: implement triangle strips with adjacency in geometry shader

This commit is contained in:
Zack Rusin 2010-06-17 13:21:38 -04:00
parent f542a2770a
commit 4320a451a3

View file

@ -9,7 +9,7 @@ static void FUNC( struct draw_geometry_shader *shader,
boolean flatfirst = (draw->rasterizer->flatshade &&
draw->rasterizer->flatshade_first);
unsigned i;
unsigned i, j;
unsigned count = input_prims->count;
LOCAL_VARS
@ -124,6 +124,17 @@ static void FUNC( struct draw_geometry_shader *shader,
i + 3, i + 4, i + 5);
}
break;
case PIPE_PRIM_TRIANGLE_STRIP_ADJACENCY:
for (i = 0, j = 0; i+5 < count; i += 2, ++j) {
TRI_ADJ( shader,
i + 0,
i + 1 + 2*(j&1),
i + 2 + 2*(j&1),
i + 3 - 2*(j&1),
i + 4 - 2*(j&1),
i + 5);
}
break;
default:
debug_assert(!"Unsupported primitive in geometry shader");