nuclear@3: #ifndef __APPLE__ nuclear@3: #include nuclear@3: #else nuclear@3: #include nuclear@3: #endif nuclear@3: nuclear@3: #include "teapot.h" nuclear@3: #include "teapot_data.h" nuclear@3: nuclear@3: static void draw_patch(struct vec3 *bez_cp, int *index, int flip, int useg, int vseg, float scale); nuclear@3: nuclear@3: int patch_subdivision = 6; nuclear@3: nuclear@3: void bezier_teapot(float scale) nuclear@3: { nuclear@3: int i; nuclear@3: nuclear@3: scale /= 2.0; nuclear@3: nuclear@3: for(i=0; i 3.14) { nuclear@3: n.x = n.y = 0.0f; nuclear@3: n.z = 1.0f; nuclear@3: } else if(pt.z < 0.00001) { nuclear@3: n.x = n.y = 0.0f; nuclear@3: n.z = -1.0f; nuclear@3: } else { nuclear@3: n = bezier_patch_norm(cp, u + uoffs[flip][k] * du, v + voffs[k] * dv); nuclear@3: } nuclear@3: nuclear@3: glTexCoord2f(u, v); nuclear@3: glNormal3f(n.x, n.y, n.z); nuclear@3: glVertex3f(pt.x * scale, pt.y * scale, pt.z * scale); nuclear@3: } nuclear@3: nuclear@3: v += dv; nuclear@3: } nuclear@3: u += du; nuclear@3: } nuclear@3: nuclear@3: glEnd(); nuclear@3: }