Это не ошибка в мире, это действительно желаемое поведение. Использование glVertex2f () аналогично использованию glVertex3f () и установке z = 0. Таким образом, он просто рисует звезду на плоскости, очень близкой к зрителю (также в зависимости от вашей проекции).
Чтобы решить вашу проблему, вы можете отключить запись глубины с помощью glDepthMask (0), затем нарисовать звезду, вызвать glDepthMask (1) и нарисовать сферу, которая теперь будет перед звездой.
Вы также можете использовать glDepthFunc (GL_GREATER) на звезде или glDisable (GL_DEPTH_TEST) на сфере, чтобы быстро достичь того же эффекта.
Чтобы сделать что-либо более сложным (например, звезда, пересекающая сферу), вам нужно использовать матрицы, чтобы поместить звезду в нужное положение.