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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не прорисовывется объект после glLoadIdentity 
:(
    Опции темы
x_byte
Дата 7.9.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

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



Осваиваю уроки от Nehe по OpenGL (http://www.pmg.org.ru/nehe/).
Проблема в уроке #4 (http://www.pmg.org.ru/nehe/nehe04.htm).
Там отрисованные треугольник и квадрат должны вращаться одновременно. Вот кусок кода:
Код

GLfloat rtri;           // Угол для треугольник
GLfloat rquad;          // Угол для четырехугольника 

....


glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();
  glTranslatef(-1.5f,0.0f,-6.0f);
  glRotatef(rtri,0.0f,1.0f,0.0f);         // Вращение треугольника по оси Y
  glBegin(GL_TRIANGLES);
    glColor3f(1.0f,0.0f,0.0f);      // Красный цвет
    glVertex3f( 0.0f, 1.0f, 0.0f);
    glColor3f(0.0f,1.0f,0.0f);      // Зеленный цвет
    glVertex3f(-1.0f,-1.0f, 0.0f);
    glColor3f(0.0f,0.0f,1.0f);      // Синий цвет
    glVertex3f( 1.0f,-1.0f, 0.0f);
  glEnd();
  
  glLoadIdentity();

  glTranslatef(3.0f,0.0f,0.0f);
  glRotatef(rquad,0.0f,1.0f,0.0f);        // Вращение по оси X
  glColor3f(0.5f,0.5f,1.0f);      // Установим синий цвет только один раз
  glBegin(GL_QUADS);
    glVertex3f(-1.0f, 1.0f, 0.0f);
    glVertex3f( 1.0f, 1.0f, 0.0f);
    glVertex3f( 1.0f,-1.0f, 0.0f);
    glVertex3f(-1.0f,-1.0f, 0.0f);
  glEnd();
  
  rtri+=0.5f;             // Увеличение переменной вращения для треугольника
  rquad+=0.2f;           // Уменьшение переменной вращения для квадрата


Собственно проблема заключается в том, что квадрат в таком случае не отрисовывается. Но если удалить вторую glLoadIdentity(), то и треугольник и квадрат отрисовываются и вращаются, но как сами понимате в одной координатной сетке, т.е. не достигается нужный эффект.
Процедуры glRotatef убирал, но квадрат при этом всё равно не отрисовывался.
Компилятор Dev_C++, испытывал и на Borland C++ Builder, результат одинаков.
В чём может быть проблема?

Это сообщение отредактировал(а) x_byte - 7.9.2007, 22:02
PM MAIL   Вверх
sgi1981
Дата 7.9.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

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



А почему треугольник отрисовывается с обходом противоположным обходу вершин квадрата ?
Дело в том что в OpenGL задается направление обхода вершин для скрытых поверхностей.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
x_byte
Дата 8.9.2007, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

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



Спасибо за ответ.
Но не помогло, отрисовывал по часовой, против часовой, но результат не изменился.
Да и почему тогда без второй процедуры glLoadIdentity() (которая идёт перед отриссовкой квадрата) обе фигуры отрысовываются нормально?
PM MAIL   Вверх
sgi1981
Дата 8.9.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 284
Регистрация: 16.3.2006

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



Квадрат находится за пределами наблюдаемого объема.
Попробуй изменить операторы так:
после второго вызова функции glLoadIdentity(), оператор будет таким

glTranslatef(3.0f, 0.0f, -4.0f);


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
x_byte
Дата 10.9.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 27.1.2004

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



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

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

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


 




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


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

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