Всем привет! Такая проблема. Есть сфера. Надо разбить её на полоски треугольников GL_TRIANGLE_STRIP и отрисовать их. glDrawElements завершается сегфолтом Видимо что-то не так с индексным массивом
вот код:
| Код |
int n = 360 / _i_step; int m = 360 / _j_step; IndexArray = new GLuint[2 *(n)*(m-1)];
void Sphere::getVertexArray() // определить массив вершин { int n = 0; for (int j = -180; j < 180; j += _j_step) // по гринвичу for (int i = 0; i < 360; i += _i_step) // по экватору { VertexArray[n][0] = _x0 + _r * sin(k * i) * cos(k * j);//x VertexArray[n][1] = _y0 + _r * sin(k * i) * sin(k * j);//y VertexArray[n][2] = _z0 + _r * cos(k * i);//z ++n; } _vertex_count = n; fclose(f); }
void Sphere::getIndexArray() // определить массив индексов вершин { int n = 0; for (int j = 0; j < (360 / _j_step) - 1; ++j) { for (int i = 0; i < (360 / _i_step); ++i) { IndexArray[n] = j * (360 / _i_step) + i; // 0 ++n; IndexArray[n] = (j + 1 )* (360 / _i_step) + i; ++n; } } _triangles_count = n; fclose(f); }
|
отрисовка:
| Код | glDrawElements(GL_TRIANGLE_STRIP,sphere->getTrianglesCount(), GL_UNSIGNED_INT,sphere->IndexArray);
|
|