void draw_shape(OBJECT *verts) { int i, j; // loop variables // polymorphic way to draw shapes glClearColor(0,0,0,0); // else black for(i = 0; i < crt_vs; i++) // handles main body of array { for(j = 0; j < crt_rs; j++) { draw_quads(verts->shape_verts, verts->shape_normals, verts->shape_tex, i,j,i,j+1,i+1,j+1,i+1,j, RED); // draws shape } } for (i = 0; i < crt_vs; i ++) // connects the sides { draw_quads(verts->shape_verts, verts->shape_normals, verts->shape_tex, i, crt_rs, i+ 1, crt_rs, i + 1, 0, i, 0, RED); } if(my_objects[num_objects - 1].sid == 0 || my_objects[num_objects].sid == 1) // fixes cube and house normal { for(i = 0; i < 2; i++) // draws tops of house and cube { draw_quads(verts->shape_verts,verts->shape_normals, verts->shape_tex, crt_vs - i, 0, crt_vs - i, 1, crt_vs - i, 2, crt_vs - i, 3, RED); } } }
// this works for all shapes void draw_shape(SHAPE *verts, GLfloat* color) { int i, j; // loop variables for(i = 0; i < curr_vs; i++) { // handles main body of array for(j = 0; j < curr_rs; j++) { draw_quads(verts->shape_verts, i, j, i, j+1, i+1, j+1, i+1, j, color); // draws shape } } for (i = 0; i < curr_vs; i ++) { // connects the sides draw_quads(verts->shape_verts, i, curr_rs, i+1, curr_rs, i+1, 0, i, 0, color); } // this handles the cube top if (curr_rs == CUBE_RS && curr_vs == CUBE_VS) { for(i = 0; i < 2; i++) { draw_quads(verts->shape_verts, curr_vs - i, 0, curr_vs - i, 1, curr_vs - i, 2, curr_vs - i, 3, color); } } }
void DeferredShading::draw_fullscreen_quad() { quad_buf.clear(); append_quad(quad_buf, Rect(-1, 1, 2, -2)); draw_quads(quad_stream, quad_buf); }