Каким образом значения x, y, z, sizeX, sizeY, sizeZ должны быть помещены в вершины, чтобы получился куб?

public static void cube(float x, float y, float z, float sx, float sy, float sz){       
glPushMatrix();
    {
        glTranslatef(x, y, z);

//Just one side of the cube is given due to too much unnecessary code.
        glBegin(GL_QUADS);
            glVertex3f(-1, -1, 1); 
            glVertex3f(1, -1, 1);
            glVertex3f(1, 1, 1);
            glVertex3f(-1, 1, 1);
        glEnd();
    }
    glPopMatrix();
}

Спасибо.

-1
Sierox 31 Июл 2013 в 12:55

1 ответ

Лучший ответ

Где бы в вашем коде вы, например, glVertex3f(-1, -1, 1); умножьте их на соответствующее значение sx, sy, sz, разделенное на 2, например glVertex3f(-sx/2, -sy/2, sz/2);

Для позиции вы можете выдать glTranslatef(x, y, z) перед рисованием куба. Если вы настаиваете на жестком кодировании этого в вершинах, вам следует записать приведенный выше оператор как glVertex3f(x - sx/2, y - sy/2, z + sz/2);

0
c.s. 31 Июл 2013 в 13:35