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

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

Какие режимы OpenGl надо включить? [Delphi, Windows]


Vemer ©   (2007-02-14 12:49:00) 

Здравствуйте.
Продолжаю разбираться с OpenGL.
Пожалуйста подскажите какие режимы надо включить, чтобы
2 треугольника "просвечивали" друг через друга?
Требуеться ли для этого освещение и расчет нормалей?

Пытался играться с glEnable(GL_BLEND),  glEnable(GL_ALPHA_TEST),
но ничего хорошего не вышло.

 glBegin(GL_TRIANGLES);
   glColor4f(0,1,0,0.5);
   glVertex3f( 0.0, 2.0, 0.0);
   glVertex3f(-2.0,-2.0, 0.0);
   glVertex3f( 2.0,-2.0, 0.0);

   glColor4f(0,0,1,0.5);
   glVertex3f( 1.0, 2.0, 0.0);
   glVertex3f(-1.0,-2.0, 0.0);
   glVertex3f( 3.0,-2.0, 0.0);

  glEnd;


Creative   (2007-02-15 16:02:00) [1]

Rial

> 2) Сделать, чтобы не пересекались (изменить взгляд на жизнь)


:-D


Rial   (2007-02-15 15:57:00) [2]

> [3] @!!ex ©   (14.02.07 17:53)
> А если они пересекаються?
> Не тривиальная задача. ИМХО

А если пересекаются..
1) Забить
2) Сделать, чтобы не пересекались (изменить взгляд на жизнь)
3) Рассчитать отрезок пересечения и рисовать
вместо двух три треугольника, такое разбиение всегда возможно.
Задача из курса школьной геометрии.


@!!ex   (2007-02-14 17:53:00) [3]


> Rial ©   (14.02.07 17:15) [2]

А если они пересекаються?
Не тривиальная задача. ИМХО


Rial   (2007-02-14 17:15:00) [4]

Возможно, проблема в том, в каком порядке ты рисуешь треугольники.
Если у тебя вся картинка вращается, то прозрачным будет только
второй треугольник относительно первого. Тот же треугольник,
который был нарисован первым, никогда не будет програчным
по отношении ко второму.
Выход - смотреть, какой в данный момент из треугольников
ближе к глазу зрителя и рисовать его вторым.


Piroxyline   (2007-02-14 13:55:00) [5]

Вроде как так:

glEnable(GL_BLEND);
glBlendFund(GL_SCR_COLOR, GL_SRC_ALPHA);
glColor4f(R, G, B, 0.5)


Наверх

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