Использование C++ и OpenGL Я нарисовал куб, используя квадратики, линии и точки. Теперь я пытаюсь сделать мой код более плотным. Для этого я хотел бы использовать для циклов.Куб OpenGL с использованием цикла for
Мои вершины для моего куба в 2d массив так:
double vertices[8][3] = {
{ 1.0f, 1.0f, 1.0f}, //0
{ 1.0f, 1.0f,-1.0f}, //1
{ 1.0f,-1.0f,-1.0f}, //2
{-1.0f,-1.0f,-1.0f}, //3
{-1.0f,-1.0f, 1.0f}, //4
{-1.0f, 1.0f, 1.0f}, //5
{-1.0f, 1.0f,-1.0f}, //6
{ 1.0f,-1.0f, 1.0f} //7
};
В настоящее время мой код, чтобы сделать куб с помощью линий
void drawLines(){
glBegin(GL_LINES);
//Front Lines
//Left
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
//Top
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Bottom
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
//Right
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Middle Lines
//Top Left
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[5][0],vertices[5][1],vertices[5][2]);
//Top Right
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
glVertex3f(vertices[0][0],vertices[0][1],vertices[0][2]);
//Bottom Left
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
glVertex3f(vertices[4][0],vertices[4][1],vertices[4][2]);
//Bottom Right
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
glVertex3f(vertices[7][0],vertices[7][1],vertices[7][2]);
//Back Lines
//Left
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
//Top
glVertex3f(vertices[6][0],vertices[6][1],vertices[6][2]);
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
//Bottom
glVertex3f(vertices[3][0],vertices[3][1],vertices[3][2]);
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
//Right
glVertex3f(vertices[2][0],vertices[2][1],vertices[2][2]);
glVertex3f(vertices[1][0],vertices[1][1],vertices[1][2]);
glEnd(); // Done Drawing Edges
}
Это достигается этот результат:
В попытке сконденсировать мой код Я пытаюсь получить тот же результат, используя для циклов в настоящее время у меня есть:
glBegin(GL_LINES);
for (int i=0; i<8; i+=1) {
for (int j=0; j<8; j+=1) {
glVertex3f(vertices[i][0],vertices[i][1],vertices[i][2]);
glVertex3f(vertices[j][0],vertices[j][1],vertices[j][2]);
}
}
glEnd();
Мой вопрос, будет кто-нибудь, пожалуйста, быть в состоянии дать мне рекомендации, чтобы получить тот же результат, как у меня с моим оригинальным кодом?
Не было бы лучше сделать массив строк (пары вершин) и перебрать его? – Matso
В вашем коде каждая вершина соединяется с каждой вершиной (включая себя). В кубе каркаса каждая вершина соединяется с тремя другими вершинами. Это невозможно сделать с помощью простого для цикла, ему нужны дополнительные рекомендации. – usr2564301