#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include "glmatrix.h"
fprintf(stderr, "Warning: Could not bind attrib %s\n", name);
}
+ checkError ("getAttribOrUniformLocation");
return attrib;
}
else
fprintf(stderr, "Warning: Could not bind uniform %s\n", name);
}
+ checkError ("getAttribOrUniformLocation");
return uniform;
}
- checkError ("getAttribOrUniformLocation");
}
GLuint program;
static void drawWireCone(void) { glutWireCone(irad,orad,slices,stacks); } /* irad doubles as base input, and orad as height input */
static void drawSolidCylinder(void) { glutSolidCylinder(irad,orad,slices,stacks); } /* irad doubles as radius input, and orad as height input */
static void drawWireCylinder(void) { glutWireCylinder(irad,orad,slices,stacks); } /* irad doubles as radius input, and orad as height input */
+/* per Glut manpage, it should be noted that the teapot is rendered
+ * with clockwise winding for front facing polygons...
+ * Same for the teacup and teaspoon
+ */
static void drawSolidTeapot(void)
-{
- /* per Glut manpage, it should be noted that the teapot is rendered
- * with clockwise winding for front facing polygons...
- */
- glFrontFace(GL_CW);
- glutSolidTeapot(orad); /* orad doubles as size input */
- glFrontFace(GL_CCW);
-}
+{ glFrontFace(GL_CW); glutSolidTeapot(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
static void drawWireTeapot(void)
-{
- /* per Glut manpage, it should be noted that the teapot is rendered
- * with clockwise winding for front facing polygons...
- */
- glFrontFace(GL_CW);
- glutWireTeapot(orad); /* orad doubles as size input */
- glFrontFace(GL_CCW);
-}
+{ glFrontFace(GL_CW); glutWireTeapot(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
+static void drawSolidTeacup(void)
+{ glFrontFace(GL_CW); glutSolidTeacup(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
+static void drawWireTeacup(void)
+{ glFrontFace(GL_CW); glutWireTeacup(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
+static void drawSolidTeaspoon(void)
+{ glFrontFace(GL_CW); glutSolidTeaspoon(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
+static void drawWireTeaspoon(void)
+{ glFrontFace(GL_CW); glutWireTeaspoon(orad); glFrontFace(GL_CCW); /* orad doubles as size input */}
#define RADIUSFAC 0.70710678118654752440084436210485f
ENTRY (Icosahedron,GEO_NO_SIZE),
ENTRY (SierpinskiSponge,GEO_SCALE),
ENTRY (Teapot,GEO_SIZE),
+ ENTRY (Teacup,GEO_SIZE),
+ ENTRY (Teaspoon,GEO_SIZE),
ENTRY (Torus,GEO_INNER_OUTER_RAD),
ENTRY (Sphere,GEO_RAD),
ENTRY (Cone,GEO_BASE_HEIGHT),
gl_UseProgram (program);
glutSetVertexAttribCoord3(attribute_fg_coord);
glutSetVertexAttribNormal(attribute_fg_normal);
+ /* There is also a glutSetVertexAttribTexCoord2, which is used only when drawing the teapot, teacup or teaspoon */
gl_matrix_mode(GL_PROJECTION);
gl_load_identity();
/* Cuboctahedron can't be shown when in shader mode, skip it */
if (useShader && NUMBEROF (table)-1 == ( unsigned )function_index)
+ {
if (key==GLUT_KEY_PAGE_UP)
function_index = 0;
else
function_index -= 1;
+ }
}