![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прямоугольник с разноцветными сторонами
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 ...