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

Прозрачность в OpenGL

#0
14:55, 10 июля 2013

Здравствуйте, совсем новичок в openGL, так что не ругайтесь сильно. Не пойму, почему присутствует прозрачность и как ее убрать?
Рисую две поверхности, но одна из них прозрачна.:

glBegin(GL_POLYGON);
    glColor3f(1.0f, 0.0f, 0.0f);
    
    
      glVertex3f(0,0,0);
      glVertex3f(50,0,0);
      glVertex3f(50,50,0);
      glVertex3f(0,50,0);
    glEnd();
 
    glColor3f(0.0f, 0.0f, 1.0f);
    glBegin(GL_POLYGON);
    glVertex3f(0,0,0);
      glVertex3f(0,0,50);
      glVertex3f(0,50,50);
      glVertex3f(0,50,0);
 
      
    glEnd();
#1
14:59, 10 июля 2013

Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные). Найди более новые статьи.

Если ничего не активировал типа GL_BLEND, то может быть, что это не прозрачность, а просто полигоны рисуются один поверх другого.

#2
15:17, 10 июля 2013

Юзай glColor4f(1.0f, 0.0f, 0.0f, 1.0f( 1 - не прозрачный, 0 - полностью прозрачный ) );

#3
15:19, 10 июля 2013

Спасибо за советы. Я просто читаю суперкнигу 3 издание, она довольно таки старая.

#4
15:32, 10 июля 2013

Разобрался наконец то) Нужно было поставить буфер глубины и активировать проверку глубины)

#5
16:17, 10 июля 2013

Возможно он был не прозрачный ))

      glVertex3f(0,0,0);
      glVertex3f(0,0,50);
      glVertex3f(0,50,50);
      glVertex3f(0,50,0);

Если не было glRotate, а просто вид отодвинут от центра "назад", то квадрат перпендикулярен экрану и попросту не виден сбоку))

#6
18:31, 10 июля 2013

Chipmunk
> Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные).
> Найди более новые статьи.
Что за глупый совет?
Конечно, пройдя этот этап, можно смело критиковать этот стандарт.
Но нужно ли человеку, который только начал изучать графику, на ранних порах все эти заморочки с какими то непонятными буферами шейдерами и т.д.?
Кроме того, много народу, который не прошел этап glBegin/glEnd попросту не понимают до конца устройство графического конвейера и буферов.
А потом тысячи тем в коде, с просьбами разобраться в их исходниках.
Ну уж нет! Пусть начинают с малого, и медленно, но уверено шагают к современному.

#7
18:56, 10 июля 2013

ed8009
> Разобрался наконец то) Нужно было поставить буфер глубины и активировать
> проверку глубины)

Нет... ты не разобрался, если для блендига нужно было включить буфер глубины :)

#8
20:23, 10 июля 2013

Big V
> Кроме того, много народу, который не прошел этап glBegin/glEnd попросту не
> понимают до конца устройство графического конвейера и буферов.
Те, кто прошёл, обычно понимают не больше.
glBegin/glEnd учит чему-то совсем отдалённому и ненужному.

#9
20:26, 10 июля 2013

Chipmunk
> Те, кто прошёл, обычно понимают не больше.
> glBegin/glEnd учит чему-то совсем отдалённому и ненужному.
>

Всякие там RAGE используют glBegin/glEnd...

#10
22:22, 11 июля 2013

innuendo
Откуда такие познания про Rage?)

#11
22:33, 11 июля 2013

Tanelxen
> Откуда такие познания про Rage?)

Ok, Doom3 и FarCry - там устроит ? :)

#12
23:04, 11 июля 2013

> Doom3 и FarCry
Старый код - это всегда испытание. Иногда его просто не трогают.

#13
23:38, 11 июля 2013

Chipmunk
> Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные).
> Найди более новые статьи.
А прозрачностьо что в старом что в новом одинакого настраивается и работает :)

#14
4:42, 12 июля 2013

Chipmunk
> Те, кто прошёл, обычно понимают не больше.
> glBegin/glEnd учит чему-то совсем отдалённому и ненужному.

Самое забавное, что видел реализации аля glBegin/glEnd на DX, чтобы было удобно всякие там UI рисовать :)

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

Тема в архиве.