Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: BuRn от Декабрь 24, 2011, 12:02



Название: работа с несколькими объектами
Отправлено: BuRn от Декабрь 24, 2011, 12:02
Не пойму как, вроде бы сделал, но как - то криво все это работает , если выбрать 1 объект, то старый остается на своем месте, тут все ок, а мой первый поворачивается, но ... , почему - то картинка под ним не обновляется , т.е. старый вариант ее остается, если потом выбираю все объекты, то у них сбиваются координаты все ... в чем дело ?
Код:
void Display()
{
    if(current_object==-1)
    {
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glMatrixMode(GL_MODELVIEW);
        for(int i=0;i<=object;i++)
        {
                glPushMatrix();
                glTranslatef(tx, ty, tz);
                glRotatef(rx, 1, 0, 0);
                glRotatef(ry, 0, 0, 1);
                glScaled(Scale, Scale, Scale);
                glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
                glColor3f(0.0f, 1.0f, 0.0f);
                glBindTexture(GL_TEXTURE_2D, num_texture);
                glBegin(GL_TRIANGLES);
                for (int j = 0; j < Obj[i].nTriangles; j++)
                {
                        glVertex3fv(&Obj[i].Vertexs[Obj[i].Triangles[j].v0].r0);
                        glVertex3fv(&Obj[i].Vertexs[Obj[i].Triangles[j].v1].r0);
                        glVertex3fv(&Obj[i].Vertexs[Obj[i].Triangles[j].v2].r0);
                }
                glEnd();
                glPopMatrix();
        }
        glutSwapBuffers();
    }
    else
    {
        glMatrixMode(GL_MODELVIEW);
         glLoadIdentity();
             glTranslatef(tx, ty, tz);
             glRotatef(rx, 1, 0, 0);
             glRotatef(ry, 0, 0, 1);
             glScaled(Scale, Scale, Scale);
             glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
             glColor3f(0.0f, 1.0f, 0.0f);
             glBindTexture(GL_TEXTURE_2D, num_texture);
             glBegin(GL_TRIANGLES);
             for (int j = 0; j < Obj[current_object].nTriangles; j++)
             {
                     glVertex3fv(&Obj[current_object].Vertexs[Obj[current_object].Triangles[j].v0].r0);
                     glVertex3fv(&Obj[current_object].Vertexs[Obj[current_object].Triangles[j].v1].r0);
                     glVertex3fv(&Obj[current_object].Vertexs[Obj[current_object].Triangles[j].v2].r0);
             }
             glEnd();
              glutSwapBuffers();

    }
}


Название: Re: работа с несколькими объектами
Отправлено: BuRn от Декабрь 24, 2011, 13:48
разобрался, проблема была в том что у каждого объекта должны были быть отдельные координаты