void GlassCube::draw(const glm::vec3 &camera_pos) const { glEnableClientState(GL_VERTEX_ARRAY); // { glPushAttrib(GL_LIGHTING_BIT | GL_ENABLE_BIT); // { glEnable(GL_BLEND); glDisable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); glVertexPointer(3, GL_FLOAT, 0, FlatSurface::vertices); static const GLfloat diffuse[] = {1.0f, 1.0f, 1.0f, 1.0f}; glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse); static const GLfloat specular[] = {1.0f, 1.0f, 1.0f, 1.0f}; glMaterialfv(GL_FRONT, GL_SPECULAR, specular); glMateriali(GL_FRONT, GL_SHININESS, 100); glColor4f(0.5, 0.5, 0.5, 0.2); glNormal3b(0, 0, 1); if (side == GL_FRONT) { if (camera_pos.x >= 1) draw_side(0); if (camera_pos.y >= 1) draw_side(1); if (camera_pos.z >= 1) draw_side(2); if (camera_pos.x <= -1) draw_side(3); if (camera_pos.y <= -1) draw_side(4); if (camera_pos.z <= -1) draw_side(5); } else /* if (side == GL_BACK) */ { if (camera_pos.x > -1) draw_side(3); if (camera_pos.y > -1) draw_side(4); if (camera_pos.z > -1) draw_side(5); if (camera_pos.x < 1) draw_side(0); if (camera_pos.y < 1) draw_side(1); if (camera_pos.z < 1) draw_side(2); } glPopAttrib(); // } glDisableClientState(GL_VERTEX_ARRAY); // } }
///////////////////////////////////////////////////////// // Render // void GEMglNormal3b :: render(GemState *state) { glNormal3b (nx, ny, nz); }
inline void glNormal( const GLbyte & x, const GLbyte & y, const GLbyte & z ) { glNormal3b( x, y, z ); }
M(void, glNormal3b, jbyte nx, jbyte ny, jbyte nz) { glNormal3b(nx, ny, nz); }