Войти
ПрограммированиеФорумГрафика

GL_CULL_FACE - определить видимые или частично видимые полигоны.

#0
14:03, 9 сен. 2019

Здравствуйте.
Отрисовывается 3D-модель с включенным GL_CULL_FACE.

::glEnable(GL_CULL_FACE);  ::glCullFace(GL_BACK);

//kcon - количество контуров          
for (ii=0; ii<kcon; ii++)
{

...

 ::glBegin(GL_POLYGON);
 ::glNormal3fv(nor);
 for (jj=1; jj <= numver; jj++)
{
  in1=...
  ver[0]=(float)(crd[in1].x);
  ver[1]=(float)(crd[in1].y);
  ver[2]=(float)(crd[in1].z);
 ::glVertex3fv(ver);
}
::glEnd();
}

На экран выводятся только видимые полигоны.
Но можно ли как-нибудь определить, какие полигоны видимы и заполнить массив видимости?
Например отрисовались (видимы) полигоны 5,6,7,15,...,56677 ?
Причем полигон может быть меньше экранного пикселя?

С уважением


#1
14:09, 9 сен. 2019
glBegin
Изображение

По теме: менять режим кулфейса не рабоатет при отрисовке полигона?

#2
14:24, 9 сен. 2019

Пусть не glBegin, пусть нулевые - ::glDrawArrays()  :-)

А как поможет смена режима ::glCullFace() ?
Тогда надо определить какие полигоны не отрисовались.

С уважением

#3
14:36, 9 сен. 2019

and_tjurin
идея в том. что бы отрисовать только нужные полигоны?
или идея в том, что бы на нужные полигоны применять кул фейс?

Для чего это вообще нужно?

#4
(Правка: 14:53) 14:52, 9 сен. 2019

Задача излучения. Из данной точки (например центра полигона) видны (облучаются) такие полигоны, из другой другие. Собственно задача не нарисовать, а промаркировать видимые из данной точки полигоны. Причём 3D модель не выпуклая.

#5
1:19, 10 сен. 2019

and_tjurin
если не real time можешь в пиксельном шейдере выводить id триангла, потом через glRead... (основной тормоз) собирать инфу. Это в том случае если инфа нужна для обработки на стороне cpu.

ПрограммированиеФорумГрафика