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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 11:18   #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 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGL. Проблема со скоростью передвижения объектов Blade Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 26.10.2009 13:40
Проблема с языком при использовании SQL Yetiball БД в Delphi 4 20.05.2009 19:38
Проблема при совместном использовании OSS 6.5 и ESS 4.0 Sazary Безопасность, Шифрование 1 07.03.2009 16:27
Проблема при использовании модальной формы a1ias Помощь студентам 10 14.11.2008 17:29