Russian Qt Forum
Ноябрь 23, 2024, 21:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: работа с несколькими объектами  (Прочитано 1933 раз)
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();

    }
}
Записан
BuRn
Гость
« Ответ #1 : Декабрь 24, 2011, 13:48 »

разобрался, проблема была в том что у каждого объекта должны были быть отдельные координаты
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 20.