вот код, который рисует цилиндр примитив:Vertex Перекрытие в OpenGL
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, height/2.0f, 0);
for (int i = 0; i < SIDENUMS +1; i++)
{
glVertex3f(radius * cos(i * 2 * PI/SIDENUMS), height/2.0f, radius * sin(i * 2 * PI/SIDENUMS));
}
glEnd();
glBegin(GL_QUADS);
for (int i = 0; i < SIDENUMS + 1;i++)
{
glVertex3f(radius * cos(i * 2 * PI/SIDENUMS), height/2.0f, radius * sin(i * 2 * PI/SIDENUMS));
glVertex3f(radius * cos(i * 2 * PI/SIDENUMS), -height/2.0f, radius * sin(i * 2 * PI/SIDENUMS));
glVertex3f(radius * cos((i+1) * 2 * PI/SIDENUMS), -height/2.0f, radius * sin((i+1) * 2 * PI/SIDENUMS));
glVertex3f(radius * cos((i+1) * 2 * PI/SIDENUMS), height/2.0f, radius * sin((i+1) * 2 * PI/SIDENUMS));
}
glEnd();
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0, -height/2.0f, 0);
for (int i = 0; i < SIDENUMS + 1; i++)
{
glVertex3f(radius * cos(i * 2 * PI/SIDENUMS), -height/2.0f, radius * sin(i * 2 * PI/SIDENUMS));
}
glEnd();
И выход нечто вроде изображения ниже:
Сейчас в картине, обратите внимание на точки A.
Этот пункт нарисован два раза, один в TRIANGLE_FAN и второй в GL_QUADS. Мой вопрос в том, что это два разных точки w автоматически состыковываются друг с другом, чтобы сделать одну точку? или они на вершине друг друга? Вкратце, сколько очков есть? один или два ? как я могу исправить, если они не свариваются друг с другом?
можно привести пример, чтобы сплавить и сварить их! как я могу их приварить? –
@ S.A.Parkhid: Это ничего, что OpenGL делает OpenGL просто наносит точки, линии и треугольники на экран, а затем забывает о том, как они появились. В OpenGL нет такой вещи, как «сцена» или модели. «слияние» или «слияние» точек - это то, что происходит в структурах данных вашей программы. Однако для фигуры, которую вы показали, фактически не имеет смысла для * общей * вершины, так как * нормали * нарисованных граней различны. – datenwolf
Я думаю, что на этой диаграмме больше точек, чем три вершины. Есть пара квадов, которые имеют вершину в этом месте и пару раздутых треугольников. Раздутые треугольники повторно используют одну вершину, но квадратики создают две различные вершины. –