Перевод треугольников с помощью OpenGL и uC

#c #opengl

#c #opengl

Вопрос:

Я борюсь с переводом треугольников в OpenGL и использованием uC . Каждая птица (треугольник) — это поток. Дело в том, что когда птицы переводят, камера или общее изображение перемещается вверх или вниз.

Код для рисования — это:

    void Graphics::draw(){
       double AxisX;
       double AxisY;
       double Direction;

       for (int i = 0; i < numBirds; i  )
       {
           AxisX     = birds[i]->Px;
           AxisY      = birds[i]->Py;
           Direction = birds[i]->Dir - 90;

           glColor3d(1, 1, 1);

       //Operacion para el triangulo
           glTranslated(AxisX, AxisY, 0.0f);
           glRotated(Direction, 0, 0, 1);


           /*
               Se mantienen estas proporciones:
                Base: 1
                Altura: 1.9364916731
                Lado (isosceles): 2
          */
           glBegin(GL_TRIANGLES); // Inicio del dibujo
           glVertex3d(-5, 0, 0); // Primer vertice
           glVertex3d( 5, 0, 0); // Segundo vertice
           glVertex3d( 0, 15, 0); // Tercer vertice
           glEnd(); // Fin del dibujo

          // Deshago las operaciones de rotacion y translacion
           glRotated(-Direction, 0, 0, 1);
           glTranslated(-AxisX, -AxisY, 0.0f);
       }
   }
  

Вопрос в том, как я могу это исправить? Я часами боролся, ничего не получая.

Комментарии:

1. Вы пробовали нажимать состояния gl в начале, а затем извлекать их по завершении?

2. Что Every bird (triangle) is a thread. это вообще значит?

3. Натан, я сделал это, и теперь работает, спасибо! И, дерхасс, когда вы работаете с uC , ваш класс представляет собой поток или задачу, аналогичную той, что при использовании pthread, но он объектно-ориентированный. Итак, у меня есть task bird, и каждая созданная птица является потоком.