Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прямоугольник с разноцветными сторонами


Provodnick ©   (2006-01-23 13:02:00) 

Здравствуйте. Проблема, возможно, простая, но вызвала затруднения. Как в трехмерном пространстве в OpenGL нарисовать прямоугольник со сторонами разного цвета. Сейчас делаю так:

   glPolygonMode(GL_FRONT, GL_FILL);
   glPolygonMode(GL_BACK, GL_POINT);
   glColor3f (1, 0, 0);
   glBegin(GL_QUADS);
     glNormal3f(1.0, 0.0, 0.0);
     glVertex3f( 0, 4, 0);
     glVertex3f( 0, 4, 4);
     glVertex3f( 0, -4, 4);
     glVertex3f( 0, -4, 0);
   glEnd;
   glColor3f (0, 0, 1);
   glBegin(GL_QUADS);
     glNormal3f(1.0, 0.0, 0.0);
     glVertex3f( 0, -4, 0);
     glVertex3f( 0, -4, 4);
     glVertex3f( 0, 4, 4);
     glVertex3f( 0, 4, 0);
   glEnd;

Но не устраивают точки по углам прямоугольника. Как быть, подскажите, пожалуйста.
И еще вопрос - как по-простому нарисовать маленький прямоугольник на большом в трехмерном режиме?
Заранее спасибо!!!


grouzd[E]v   (2006-01-23 19:25:00) [1]

=) да не за что

---
... we are walking on a thin line and you better avoid the risk ...


Provodnick   (2006-01-23 17:33:00) [2]

Вариант "чуть выше" срабатывает. Спасибо еще раз. Приятно получать ответы на долго мучавшие вопросы:)))


Provodnick   (2006-01-23 16:53:00) [3]

Большое спасибо!!! glCullFace - это то, что мне было необходимо! А вот про маленькие и большие прямоугольники - видимо, действительно придется маленький чуть "выше" рисовать с одной и с другой стороны. А идея с glDepthTest в двух словах в чем заключалась?


grouzd[E]v   (2006-01-23 16:27:00) [4]

Тогда glCullFace на задние грани, рисовать 2 квада разных цветов, не забудь про нормали

---
... we are walking on a thin line and you better avoid the risk ...


Provodnick   (2006-01-23 13:56:00) [5]

Без glPolygonMode(GL_BACK, GL_POINT); отображается неверно, т.к. для обратной стороны по умолчанию считается glPolygonMode(GL_BACK, GL_FILL); - в результате некорректное отображение - в некоторых местах просвечивается другой цвет. А точек быть не должно.

Что каксается второго - сейчас вначале рисую маленький а ПОТОМ большой - и, как ни странно, маленький отображается поверх большого с обеих сторон (что и нужно), но опять же отображение несколько некорректно (аналогично выше описанному).


grouzd[E]v   (2006-01-23 13:45:00) [6]


> glPolygonMode(GL_BACK, GL_POINT);

а зачем вот это? или точки должны быть?


> И еще вопрос - как по-простому нарисовать маленький прямоугольник
> на большом в трехмерном режиме?

glDepthTest или немного приподнять маленький над большим

---
... we are walking on a thin line and you better avoid the risk ...


Наверх

Титульная страница Поиск, карта сайта Написать письмо