У меня есть высота и ширина, и я пытаюсь создать квадроцикл с ними. Когда я это делаю:
vector<Point2D> vertices;
vector<unsigned int> indices;
Point2D topLeft = Point2(0, height);
Point2D topRight = Point2(width, height);
Point2D bottomLeft = Point2(0, 0);
Point2D bottomRight= Point2(width, 0);
indices.push_back(0);
indices.push_back(1);
indices.push_back(2);
indices.push_back(0);
indices.push_back(2);
indices.push_back(3);
vertices.push_back(topLeft);
vertices.push_back(topRight);
vertices.push_back(bottomLeft);
vertices.push_back(bottomRight);
Я получаю треугольник вместо квадроцикла. Но когда я это делаю:
vector<Point2D> vertices;
vector<unsigned int> indices;
Point2D topLeft = Point2(-width, height);
Point2D topRight = Point2(width, height);
Point2D bottomLeft = Point2(width, -height);
Point2D bottomRight= Point2(-width, -height);
indices.push_back(0);
indices.push_back(1);
indices.push_back(2);
indices.push_back(0);
indices.push_back(2);
indices.push_back(3);
vertices.push_back(topLeft);
vertices.push_back(topRight);
vertices.push_back(bottomLeft);
vertices.push_back(bottomRight);
Он работает отлично. Что происходит не так? Я думаю, что внизу?
Этот первый сегмент создает два треугольника, перекрывающиеся с различной обмоткой, и откручивается треугольник обмотки против часовой стрелки. Если вы отключите отбраковку, вы увидите оба треугольника, но не в том порядке, в котором вы хотели бы.
Второе расположение полностью отличается, два треугольника имеют порядок намотки по часовой стрелке, которые образуют квад. Если вы замените отрицательные числа нулями, вы увидите, что это не то же самое, что и предыдущая компоновка.
Point2D topLeft = Point2( 0, height);
Point2D topRight = Point2(width, height);
Point2D bottomLeft = Point2(width, 0);
Point2D bottomRight= Point2(0, 0);
Не зная точно, что вы используете, я бы предложил использовать x и y вместо ширины и высоты, так как вы устанавливаете 'width' равным 0, который используется как координата x. Ярлыки могут вызвать путаницу в отношении того, с чем вы фактически работаете, поскольку вряд ли вы хотите, чтобы ширина или высота были равны 0.
Если вы рисуете на бумаге координаты точек, которые вы добавляете в виде вершин, кажется, вы делаете треугольник. Если высота = 3 и ширина = 4, список вершин:
(0, 3)//вверх вдоль y
(3, 4)//по х
(0, 0)//обратно в 0 - треугольник!
(4, 0)//одиночный отрезок вдоль x
Мне кажется, что порядок, на который вы нажимаете вершины, должен быть topLeft-> topRight → bottomRight-> bottomLeft, чтобы сделать многоугольник по часовой стрелке.