У меня возникают проблемы при рендеринге перекрывающихся объектов в OpenGL.
Я вызываю функции, которые рисуют объекты, так что если я вызываю drawB (), а затем drawA (), A выше B и B может бытьскрыто A.
Все работает нормально, пока не произойдет, что A - это линия (GL_LINES), а B - это многоугольник (GL_POLYGON).Если это произойдет, B, который должен быть расположен внизу, будет нарисован поверх A.
В этот момент я отключил GL_DEPTH_TEST.Я попытался включить его, я попытался glDepthMask и glPolygonOffset, но ни один не работал.Я предполагаю, что я использовал их неправильно.Любые идеи, как я могу нарисовать эти объекты в правильном порядке?
** Редактировать: Очевидно, проблема была в том, что я не очищал GL_COLOR_BUFFER_BIT, но я не очищаюсь из-за скорости.Я должен найти способ, не стирая gl_color_buffer_bit, рисовать объекты в порядке **
У него есть ортографическая проекция, определяемая glOrtho (r.left (), r.right (), r.bottom (), r.top (), 0,2);
При вызове функции рисуются фоновые объекты, затем передний план.Я хочу, чтобы фоновые объекты были нарисованы ниже переднего плана.
Идея состоит в том, что у меня есть два макета, один для переднего плана и один для фона.Сначала каждый объект на заднем плане рисует сам.Тогда каждый объект на переднем плане делает то же самое.Каждый объект имеет список отображения, который преобразует свою собственную систему координат в соответствии со своими потребностями.Идея этих списков отображения состоит в том, чтобы разрешить вложение объектов, каждый объект со своей собственной системой координат, несмотря на их родительскую систему координат.
В какой-то момент у меня на заднем плане есть набор объектов, который выполняет
glBegin (GL_POLYGON) ;
for (angle = 0; angle<PI * 2;angle+=1){
glVertex2f (X + sin(angle) * Radius, Y + cos(angle) * Radius);
}
glEnd () ;
другой объект, в макете переднего плана делает
glBegin(GL_LINES);
glVertex2f(m_x[m_currentPositionP1],m_y[m_currentPositionP1]);
glVertex2f(m_x[m_currentPositionP],m_y[m_currentPositionP]);
glEnd();
Но линии кажутся скрытыми многоугольником