Я сделал объект A в сцене следующим образом. Сцена также имеет много других объектов.
void Draw()
{
if( glIsList( displayListID ) )
{
glPushAttrib( GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_ENABLE_BIT );
glEnable( GL_BLEND );
glEnable( GL_DEPTH_TEST );
//glDepthMask( GL_FALSE );
glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
glEnable( GL_LINE_SMOOTH );
glEnable( GL_POINT_SMOOTH );
glEnable( GL_POLYGON_SMOOTH );
glMatrixMode( GL_MODELVIEW );
color.setAlpha(alpha); // set alpha transparent of this objectA
glCallList( displayListID );
//glDepthMask( GL_TRUE );
glDisable( GL_BLEND );
glPopAttrib();
}
}
Теперь вот проблема,
Как показано, я прокомментирую две строки //glDepthMask (GL_FALSE); //glDepthMask (GL_TRUE);
сцена позволяет объекту A и другим объектам правильно углубленно. Однако, модификация объекта А альфа больше не работает (т.е. color.setAlpha(alpha)).
Если я раскомментирую эти две строки, то альфа-модификация вернется к работе. Однако рендеринг глубины НЕ правильный. Другими словами, иногда объект A должен находиться за другими объектами, но он выглядит как объект A перед всеми объектами.
Как исправить эту проблему?
Спасибо