Bezier patches 3x3


Number of Triangle Strips = 2x where x is the tesselation level

a tesselation level of 1 would have 2 tri strips.


Level 1 = 21 = 2 strips

Level 2 = 22 = 4 strips

Level 3 = 23 = 8 strips

Level 4 = 24 = 16 strips



Number of vertices per strip is equal to (2y + 2) where y is equal to the level + 1


Level 1 = (21+1 + 2) = (4 + 2) = 6 vertices per strip

Level 2 = (22+1 + 2) = (8 + 2) = 10 vertices per strip

Level 3 = (23+1 + 2) = (16 + 2) = 18 vertices per strip

Level 4 = (24+1 + 2) = (32 + 2) = 34 vertices per strip



Total vertices per path is equal to (strips * vertices per strip)


Level 1 = 6 * 2 = 12 vertices per patch

Level 2 = 10 * 4 = 40 vertices per patch

Level 3 = 18 * 8 = 144 vertices per patch

Level 4 = 34 * 16 = 544 vertices per patch


Rendering the patches


//Point is an array of 3 floats


int strips = pow(2, level);

for(i = 0; i < strips, i++)

{

glBegin(GL_TRIANGLE_STRIP);


for(j = 0; j < (pow(2, (level + 1)) + 2), j++)

{

glVertex3fv(points[((i*strips) + j)]);

}

glEnd();

}