Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простое вращение в OpenGL, не получается вращение в OpenGL 
:(
    Опции темы
Yuran89
Дата 23.11.2010, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.1.2009
Где: }{рустовая

Репутация: нет
Всего: 1



Здравствуйте. У меня простой вопрос: Рисую в C++ Builder 6 (OpenGl) оси координат и сферу.Затем, с помощью таймера вращаю сферу вокруг своей оси. Проблема в том что вращается и сфера и оси координат. Как мне сделать так что бы вращалась только сфера? В общем вот что я делаю:
Код

void TForm1::Draw()
      {
      int vid;
        glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
        glEnable(GL_POINT_SMOOTH);        
 
  glColor3d(0.0,0.0,0.0);
//  glPushMatrix();
  glBegin(GL_LINES);  
     glVertex2d(-7,-5); 
     glVertex2d(-7,8);
     glVertex2d(-7,-5); 
     glVertex2d(8,-5); 
  glEnd();              
 
        GLUquadricObj *quadObj;
        quadObj=gluNewQuadric();
        if (RadioButton2->Checked==true)        vid=GLU_LINE;
           else if(RadioButton3->Checked==true)       vid=GLU_POINT;
              else vid=GLU_FILL;
        gluQuadricDrawStyle(quadObj, vid);
        glRotated(10, 0,1,0);
        glColor3d(1.0,0.0,0.0);
        gluSphere(quadObj, 3,30,30);  
 // glPopMatrix();
        gluDeleteQuadric(quadObj);
        SwapBuffers(ghDC);
      }

PM MAIL WWW   Вверх
Yuran89
Дата 24.11.2010, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.1.2009
Где: }{рустовая

Репутация: нет
Всего: 1



В каком порядке мне вызывать glPushMatrix() и glPopMatrix(), и в каком месте?
PM MAIL WWW   Вверх
Alexeis
Дата 24.11.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 5
Всего: 459



Цитата(Yuran89 @  24.11.2010,  01:36 Найти цитируемый пост)
В каком порядке мне вызывать glPushMatrix() и glPopMatrix(), и в каком месте? 

  Чтобы выводить модель без поворота следует сбросить матрицу до единичной glLoadIdentity() . Если предыдущая матрица нужна, то перед сбросом следует сделать glPushMatrix(), а для того чтобы снова использовать ее для вращения, то восстановить glPopMatrix()
  Но вообще, сначала следует задать тип матрицы, для которой осуществляется операция при помощи glMatrixMode()


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Yuran89
Дата 24.11.2010, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 16.1.2009
Где: }{рустовая

Репутация: нет
Всего: 1



Код

        glPushMatrix();                        
            glRotated( angle, 0, 1, 0 );
            glColor3d( 1.0, 0.0, 0.0 );
            gluSphere( quadObj, 3, 30, 30 );  
        glPopMatrix(); 


решение найдено, но боюсь что скоро появятся другие вопросы... 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.