Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 15:22   #1
Gwaeron
 
Аватар для Gwaeron
 
Регистрация: 22.04.2010
Сообщений: 3
Сообщение Проблема при использовании прозрачности объектов в OpenGL

Здравствуйте, вот диплом нужно написать и столкнулся с проблемой в отрисовке объектов. Создал тему в Помощи студентам, но есть мнение она там сразу и затерялась, решил перепостить сюда, надеюсь никто не накажет. В общем есть несколько объектов, рисуются с помощю OpenGL. Все объекты это поверхности второго порядка, либо просто плоскости. Рисуются просто 4-угольниками с помощью glBegin(GL_QUADS), далее SwapBuffers(DC). Есть потребность в изменении прозрачности объектов. Возникает проблема, когда допустим нарисованны две плоскости, то смотря на первую через вторую, первая видна, а наоборот нет. По большому счету смотря через объект нарисованный первым все остальные объекты, нарисованные позже, не видны. Посоветуйте что-либо.
Вот две картинки, что бы было понятней.


Так же немного кода:
Код:
procedure PlosX(r1,r2,r3:GLFloat); 
...
Begin
glBegin(GL_QUADS);
...
if i:=-d to d-1 then
begin
  y1:=...;
  y2:=...;

  z1:=...;
  z2:=...;

  x1:=...;
  x2:=...;
  x3:=...;
  x4:=...;

  glVertex3f( x1, y1, z1);
  glVertex3f( x4, y2, z1);
  glVertex3f( x2, y2, z2);
  glVertex3f( x3, y1, z2);

end;
glEnd;
End;
И в итоге получается:
Код:
glColor4f(1,0,0,Blend1);
PlosX(a1,b1,c1);
glColor4f(0,1,0,Blend2);
PlosX(a2,b2,c2);
SwapBuffers(DC);
Ну там перед этим инициализация графики, цвета, глубины и т.д., но она вроде стандартная, но все же:
Код:
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45.0, PanelGraph.Width/PanelGraph.Height, 0.1, 500);
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  glClearColor(BackC.R, BackC.G, BackC.B, 1.0);
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  glShadeModel(GL_SMOOTH);                 
  glClearDepth(1.0);                      
  glEnable(GL_DEPTH_TEST);                 
  glDepthFunc(GL_LESS);		                 
  glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

  glEnable(GL_COLOR_MATERIAL);
  glLightModelfv(GL_LIGHT_MODEL_AMBIENT, @ambient);
  glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, @ambient);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);

  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glEnable(GL_BLEND);
  glEnable(GL_LINE_SMOOTH);
  glEnable(GL_POINT_SMOOTH);
Gwaeron вне форума Ответить с цитированием
Старый 24.04.2010, 20:32   #2
Nick Alte
 
Регистрация: 24.04.2010
Сообщений: 4
По умолчанию

Жаль вас огорчать, но простыми средствами проблема пересекающихся полупрозрачных объектов не решаема. Один из главных недостатков алгоритмов с Z-буфером. В случае непересекающихся прозрачных объектов их надо выводить строго в порядке приближения к зрителю. В случае совместного присутствия непрозрачных и прозрачных объектов сначала рисуются непрозрачные, а потом прозрачные в вышеуказанном порядке.
Nick Alte вне форума Ответить с цитированием
Старый 25.04.2010, 14:33   #3
Gwaeron
 
Аватар для Gwaeron
 
Регистрация: 22.04.2010
Сообщений: 3
По умолчанию

ммм.... что ж спасибо за ответ, хоть теперь знаю что это не решается, а то никто ничего сказать не может и остаешься в неведении и не понятно что делать...
Gwaeron вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема при использовании прозрачности объектов в OpenGL Gwaeron Помощь студентам 0 22.04.2010 11:18
OpenGL. Проблема со скоростью передвижения объектов Blade Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 26.10.2009 13:40
Проблема с языком при использовании SQL Yetiball БД в Delphi 4 20.05.2009 19:38
Проблема при использовании модальной формы a1ias Помощь студентам 10 14.11.2008 17:29