默认情况下,对象似乎是从前到后绘制的。我正在绘制一个 2-D UI 对象,并希望从前创建它。例如,我可以先创建一个白色方块,然后在其顶部创建一个稍小的黑色方块,从而创建一个带有白色边框的黑色窗格。 这篇文章对此进行了一些讨论,并将此顺序描述为“画家算法”,但最终他们给出的示例只是简单地以相反的顺序渲染对象以获得所需的效果。我想从前到后(第一个对象在后面,后续对象在顶部绘制)渲染可以通过一些转换来实现(gOrtho?)?
我还会提到,我对使用 GLUT 等包装库的解决方案不感兴趣。
我还发现,使用 Cocoa NSOpenGLView 在 Mac 上的默认行为似乎会向后拉,而在 Windows 中我无法获得这种行为。我正在使用的 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();