Я узнал, что не так.Оказывается, я неправильно использовал sizeof(array)
.(конкретно, со ссылкой на приведенный ниже код, вместо использования i < numCurves
, я наивно пытался сделать i < sizeof(points)
)
Следовательно, вместо того, чтобы рисовать 4-5 точек, я закончил тем, что нарисовал 192 кривых, приводяк странным результатам.Алмаз в середине был из-за того, что он не соединялся с начальной точкой.Для справки для будущих людей, которые хотят это сделать, вот код:
Ошибочная картинка: Ошибочная картинка http://img535.imageshack.us/img535/8207/failfd.png
Конечный продукт: Конечный продукт http://img685.imageshack.us/img685/7641/finalsa.png
void drawIrregularPolygon(GLfloat points[][4][3], int numCurves)
// REQUIRES: GLfloat points to be a polygon and center of circle to be current matrix
// EFFECTS: An irregular shape would be drawn
{
for (int i = 0; i < numCurves; i++)
{
glMap1f( GL_MAP1_VERTEX_3, 0.0f, 1.0f, 3, 4, &points[i][0][0] );
glBegin(GL_POLYGON); //replace GL_POLYGON with GL_LINE_STRIP if you need outline
for (int j = 0; j <= TOTAL_SEGMENTS; j++)
glEvalCoord1f((GLfloat) j / TOTAL_SEGMENTS);
glVertex2f(points[0][0][0], points[0][0][1]);
glEnd();
}
}