我正在尝试在3D场景上创建2D叠加层!我已经尝试了所有可以在GameDev和StackOverflow上找到的解决方案,但它们似乎没有用!
我目前的代码:
static void ready3D()
{
glViewport(0, 0, Display.getWidth(),Display.getHeight());
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLU.gluPerspective(45, (float) Display.getWidth()/Display.getHeight(), 0.1f, 5000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glDepthFunc(GL_LEQUAL);
glEnable(GL_DEPTH_TEST);
}
static void ready2D()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
GLU.gluOrtho2D(0.0f, Display.getWidth(), Display.getHeight(), 0.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.375f, 0.375f, 0.0f);
glDisable(GL_DEPTH_TEST);
}
和
glPushMatrix();
//Overlay start - This is in my render method BTW.
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
ready2D();
glBegin(GL_QUADS);
glColor3f(1, 1, 1);
glVertex2f(0, 0); // bottom-left
glVertex2f(0, 1); // top-left
glVertex2f(1, 1); // top-right
glVertex2f(1, 0); // bottom-right
glEnd();
glPopMatrix();
ready3D();
然而,我试图绘制的2D盒子不会画画!显然,我最终希望在叠加层上有复杂的对象/图标,但首先要做的事情。
3D世界仍然完全正常。
有人能够告诉我我做错了吗?
答案 0 :(得分:0)
2D四边形顶点的顺序对我来说有点可疑,如果我正确地读它:左下角,右上角,右下角,左上角,这会产生一种交叉而不是四边形。
试试这个:
glVertex2f(0, 0); // bottom-left
glVertex2f(0, 1); // top-left
glVertex2f(1, 1); // top-right
glVertex2f(1, 0); // bottom-right
请注意顺时针顺序,我相信OpenGL默认为前置四边形。