コード例 #1
0
ファイル: OGLShapes.cpp プロジェクト: Zandriy/SDLRedBook1-7
void OGLShapes::wireCube(GLdouble size)
{
	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
	solidCube(size);
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
コード例 #2
0
ファイル: Tile.cpp プロジェクト: crazym/pacman3ds
void Tile::draw(GLint texturePellets, GLint texturePPellets)
{
    /* Setup position */
    glTranslatef(this->x, 0.0, this->z);
    
    /* Draw */
    glPushMatrix();
    glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, tile_color);
    
    switch (this->type) {
        case 'W':
            /* Draw a Wall */
            glMaterialfv(GL_FRONT, GL_SHININESS, no_shininess);
            glMaterialfv(GL_FRONT, GL_SPECULAR, no_specular);
            glColor4fv(tile_color);
            solidCube(1.0, this->wallTextureID);
            break;
            
        case 'Y':
            /* Draw a Tile */
            glPushMatrix();
                glColor4fv(tile_color);
                glTranslatef(0.0, -0.4, 0.0);
                glScalef(1.0, 0.2, 1.0);
                solidCube(1.0, this->floorTextureID);
            glPopMatrix();
            
            /* Draw the Number 8 */
            /*
            glPushMatrix();
                glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, group_number);
                glColor4fv(group_number);
                glTranslatef(0.0, -0.2, 0.0);
                glRotatef(90, 1.0, 0.0, 0.0);
                number();
            glPopMatrix();
            
            glPushMatrix();
                glTranslatef(0.0, -0.2, 0.2);
                glRotatef(90, 1.0, 0.0, 0.0);
                number();
            glPopMatrix();
            */
            
            break;

        case 'Z':
            /* Draw a Tile */
            glPushMatrix();
                glColor4fv(tile_color);
                glTranslatef(0.0, -0.4, 0.0);
                glScalef(1.0, 0.2, 1.0);
                solidCube(1.0, this->floorTextureID);
            glPopMatrix();
            
            /* Draw the Number 8 */
            /*
            glPushMatrix();
                glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, group_number);
                glColor4fv(group_number);
                glTranslatef(0.0, -0.2, 0.0);
                glRotatef(90, 1.0, 0.0, 0.0);
                number();
            glPopMatrix();
            glPushMatrix();
                glTranslatef(0.0, -0.2, 0.2);
                glRotatef(90, 1.0, 0.0, 0.0);
                number();
            glPopMatrix();
            */
            break;
            
        case 'X':
            /* Draw a Tile */
            glPushMatrix();
                glColor4fv(tile_color);
                glTranslatef(0.0, -0.4, 0.0);
                glScalef(1.0, 0.2, 1.0);
                solidCube(1.0, this->floorTextureID);
            glPopMatrix();
            
            break;

            
        default:
            break;
            
    }
    glPopMatrix();
    
    /* Draw Pellet */
    if (this->pellet) {
        
        if (texturePellets) {
            glEnable(GL_TEXTURE_GEN_S);
            glEnable(GL_TEXTURE_GEN_T);
            
            glBindTexture(GL_TEXTURE_2D, this->pelletTextureID);
        }
        
        glTranslatef(0.0, 0.1, 0.0);
        glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pellet_color);
        glColor4fv(pellet_color);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, high_shininess);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
        glutSolidSphere(0.2, 20, 20);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, no_shininess);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, no_specular);
        
        if (texturePellets) {
            glDisable(GL_TEXTURE_GEN_S);
            glDisable(GL_TEXTURE_GEN_T);
        }
    }
    
    /* Draw Power Pellet */
    if (this->powerPellet) {
        
        if (texturePPellets) {
            glEnable(GL_TEXTURE_GEN_S);
            glEnable(GL_TEXTURE_GEN_T);
            
            glBindTexture(GL_TEXTURE_2D, this->pelletTextureID);            
        }
        
        glTranslatef(0.0, 0.1, 0.0);
        glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, pellet_color);
        glColor4fv(pellet_color);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, high_shininess);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, mat_specular);
        glutSolidSphere(0.4, 20, 20);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, no_shininess);
        glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, no_specular);
        
        if (texturePPellets) {
            glDisable(GL_TEXTURE_GEN_S);
            glDisable(GL_TEXTURE_GEN_T);
        }
        
    }
}
コード例 #3
0
ファイル: Alien.cpp プロジェクト: kalamara/gloid
void Alien::display(){

    type = game->levelType();

    if(active){
        base = gluNewQuadric();
        glPushMatrix();
        glTranslatef(place.x, place.y, place.z);

        switch(type){
        // Alien 1
        case 1:
            glPushMatrix();
            glColor3f(ZERO, ZERO, ONE);
            glTranslatef(ZERO, ZERO, ZERO);
            glRotatef(roty, ZERO, ONE, ZERO);
            glRotatef(-90.0f, ONE, ZERO, ZERO);
            glRotatef(-30.0f, ZERO, ONE, ZERO);
            glPushMatrix();
            glTranslatef(ZERO, ZERO, ZERO);
            gluQuadricDrawStyle(base, GLU_FILL);
            gluCylinder(base, ONE, ZERO, 2.0f, 12, 12);
            gluQuadricOrientation(base, GLU_INSIDE);
            gluDisk(base, 0, ONE, 12, 12);
            gluQuadricOrientation(base, GLU_OUTSIDE);
            glPopMatrix();
            glPushMatrix();
            gluDisk(base, 0, ONE, 12, 12);
            glTranslatef(-ONE, ZERO, -ONE);
            gluQuadricDrawStyle(base, GLU_FILL);
            gluCylinder(base, 1.5f, ONE, ONE, 12, 12);
            gluQuadricOrientation(base, GLU_INSIDE);
            gluDisk(base, 0, 1.5f, 12, 12);
            gluQuadricOrientation(base, GLU_OUTSIDE);
            glPopMatrix();
            glPopMatrix();
            break;
            // Alien 2
        case 2:
            
            glPushMatrix();
            glRotatef(roty, ZERO, ONE, ZERO);
            glRotatef(-45.0f, ZERO, ONE, ZERO);
            glRotatef(15.0f, ZERO, ONE, ZERO);
            glTranslatef(ZERO, ZERO, ZERO);
            glPushMatrix();
            glColor3f( ZERO, ONE, ZERO); //green
            solidTetrahedron(6.0f);
            glPopMatrix();

            glPushMatrix();
            glTranslatef ( ZERO, ZERO, ZERO );
            glColor3f( ONE, ZERO, ZERO); //red
            gluSphere(base, 2.0f, 12, 12);
            glPopMatrix();
            glPopMatrix();
            break;

            // Alien 3
        case 3:
            glPushMatrix();
            glRotatef(roty, ZERO, ONE, ZERO);
            glPushMatrix();
            glTranslatef(ZERO, 1.5f, ZERO);
            glColor3f(ONE, ZERO, ZERO);
            gluSphere(base, ONE, 12, 12);
            glPopMatrix();
            glPushMatrix();
            glColor3f(ZERO, ONE, ZERO);
            glTranslatef(0.866f, ZERO, ZERO);
            gluSphere(base, ONE, 12, 12);
            glPopMatrix();
            glPushMatrix();
            glColor3f(ZERO, ZERO, ONE);
            glTranslatef(-0.866f, ZERO, ZERO);
            gluSphere(base, ONE, 12, 12);
            glPopMatrix();
            glPopMatrix();
            break;

            // Alien 4
        case 0:
            if((game->toc() % 4000) < 1000)
            {
                glPushMatrix();
                glTranslatef(ZERO, ZERO, ZERO);
                glColor3f(ONE, ZERO, ZERO);//red
                gluSphere(base, 2.0f, 12, 12);
                glPopMatrix();
            }
            else
            {
                glPushMatrix();
                glTranslatef(ZERO, ZERO, ZERO);
                glRotatef(45, ZERO, ONE, ZERO);
                glRotatef(60, ONE, ZERO, ZERO);
                glRotatef(roty, ZERO, ONE, ZERO);
                glColor3f(ONE, ZERO, ZERO);
                solidCube(4.0f);
                glPopMatrix();
            }
            break;

        default:
            break;
        }
        glPopMatrix();
        gluDeleteQuadric(base);
    }
}