OpenGL массив шаров для пула - PullRequest
2 голосов
/ 21 апреля 2011

Я рисую массив шариков пула в opengl, используя c ++, проблема, с которой я сталкиваюсь, заключается в том, что массив рисует по прямой линии.когда я использую gltranslate, шарики по-прежнему переводятся только вдоль линии, когда я редактирую оси z и y, что я хочу сделать, это установить шарики в форме треугольника, как разрыв совпадения пула. Как использовать код массива, чтобы установитьшары, как это?любая помощь будет высоко ценится

 balls[7];
    for (int x = ball-start; x<ball-end;x++)
    {
       glTranslatef(0,0,0.5);
       glColor3f(1,0,0);
       ball[x].drawball();
    }

Ответы [ 2 ]

3 голосов
/ 21 апреля 2011

при условии:

struct Ball {
    double x,y,z;
    void drawball(void);
    /* ... */
    } ball[7];

try:

for(int i=0; i<7 ;i++)
    {
    glPushMatrix();
        glTranslated(ball[i].x,ball[i].y,ball[i].z);
        glColor3f(1,0,0);
        ball[i].drawball();
    glPopMatrix();
    }

детали, возможно, различаются, но, надеюсь, вы поняли идею.

2 голосов
/ 21 апреля 2011

Сделайте что-то вроде этого:

// first of all, include the x,y position (assuming 2D, since pool) in the Ball object:
class Ball
{
   //...

   private:
      float xpos, ypos;
   //...
};

Затем, когда вы создаете массив шаров, а не просто делаете 8 шаров, вы захотите распределить память в куче так, чтобы онапоследний на протяжении всей вашей игры.Так что сделайте это:

Ball *ball= new Ball*[8];
ball[0] = new Ball(x0,y0);
ball[1] = new Ball(x1,y1);
ball[2] = new Ball(x2,y2);
ball[3] = new Ball(x3,y3);
// ...

Убедитесь, что когда ваша игра окончена, вы убираете за собой.

for (int i = 0; i < 8; i++)
   delete ball[i];

delete [] ball;

Затем в вашем Ball :: draw () сделайте что-то вроде этого:

Ball::draw() 
{
   glColor3f(/*yellow*/); // Set the color to yellow 
   glTranslatef(-xpos, -ypos, 0); // Move to the position of the ball
   // Draw the ball
   glTranslatef(xpos, ypos, 0); // Move back to the default position
}

Все, что вам нужно сделать, это придумать правильные (x0, y0), (x1, y1), (x2, y2) ..., чтобы сформировать треугольник!Имеет ли это смысл / отвечает на ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...