По умолчанию кажется, что объекты нарисованы спереди назад. Я рисую двумерный объект пользовательского интерфейса и хотел бы создать его задом наперед. Например, я мог бы сначала создать белый квадрат, а затем создать чуть меньший черный квадрат поверх него, создав тем самым черную панель с белой рамкой. В этом посте было некоторое обсуждение, и этот порядок описывался как «Алгоритм художника», но в конечном итоге приведенный ими пример просто отображал объекты в обратном порядке, чтобы получить желаемый эффект. Я рассчитываю задом наперед (первые объекты возвращаются назад, последующие объекты рисуются сверху) рендеринга можно добиться с помощью некоторого преобразования (gOrtho?)?
Я также упомяну, что меня не интересует решение с использованием библиотеки-оболочки, такой как GLUT.
Я также обнаружил, что поведение по умолчанию на Mac с использованием Cocoa NSOpenGLView, похоже, отодвигает на задний план, где, как и в Windows, я не могу получить это поведение. Код установки в окнах, которые я использую, таков:
glViewport (0, 0, wd, ht);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho (0.0f, wd, ht, 0.0f, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();