Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Разбиение поверхности сферы на GL_TRIANGLE_STRIP


Автор: zaytsewa 9.2.2011, 17:38
Всем привет!
Такая проблема. Есть сфера. Надо разбить её на полоски треугольников 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); 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)