Здравствуйте, совсем новичок в 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();
Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные). Найди более новые статьи.
Если ничего не активировал типа GL_BLEND, то может быть, что это не прозрачность, а просто полигоны рисуются один поверх другого.
Юзай glColor4f(1.0f, 0.0f, 0.0f, 1.0f( 1 - не прозрачный, 0 - полностью прозрачный ) );
Спасибо за советы. Я просто читаю суперкнигу 3 издание, она довольно таки старая.
Разобрался наконец то) Нужно было поставить буфер глубины и активировать проверку глубины)
Возможно он был не прозрачный ))
glVertex3f(0,0,0);
glVertex3f(0,0,50);
glVertex3f(0,50,50);
glVertex3f(0,50,0);
Если не было glRotate, а просто вид отодвинут от центра "назад", то квадрат перпендикулярен экрану и попросту не виден сбоку))
Chipmunk
> Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные).
> Найди более новые статьи.
Что за глупый совет?
Конечно, пройдя этот этап, можно смело критиковать этот стандарт.
Но нужно ли человеку, который только начал изучать графику, на ранних порах все эти заморочки с какими то непонятными буферами шейдерами и т.д.?
Кроме того, много народу, который не прошел этап glBegin/glEnd попросту не понимают до конца устройство графического конвейера и буферов.
А потом тысячи тем в коде, с просьбами разобраться в их исходниках.
Ну уж нет! Пусть начинают с малого, и медленно, но уверено шагают к современному.
ed8009
> Разобрался наконец то) Нужно было поставить буфер глубины и активировать
> проверку глубины)
Нет... ты не разобрался, если для блендига нужно было включить буфер глубины :)
Big V
> Кроме того, много народу, который не прошел этап glBegin/glEnd попросту не
> понимают до конца устройство графического конвейера и буферов.
Те, кто прошёл, обычно понимают не больше.
glBegin/glEnd учит чему-то совсем отдалённому и ненужному.
Chipmunk
> Те, кто прошёл, обычно понимают не больше.
> glBegin/glEnd учит чему-то совсем отдалённому и ненужному.
>
Всякие там RAGE используют glBegin/glEnd...
innuendo
Откуда такие познания про Rage?)
Tanelxen
> Откуда такие познания про Rage?)
Ok, Doom3 и FarCry - там устроит ? :)
> Doom3 и FarCry
Старый код - это всегда испытание. Иногда его просто не трогают.
Chipmunk
> Не учись старому стандарту (glBegin/glEnd, glColor, glVertex и тому подобные).
> Найди более новые статьи.
А прозрачностьо что в старом что в новом одинакого настраивается и работает :)
Chipmunk
> Те, кто прошёл, обычно понимают не больше.
> glBegin/glEnd учит чему-то совсем отдалённому и ненужному.
Самое забавное, что видел реализации аля glBegin/glEnd на DX, чтобы было удобно всякие там UI рисовать :)
Тема в архиве.