LWJGL / OpenGL显示2D文本

时间:2015-01-12 04:19:23

标签: opengl text 2d lwjgl hud

我正在使用Slick在我的3D游戏中将文字写为HUD。我设法弄清楚如何显示文本,但有一个问题。文本显示在远离相机的某个深度某处,因此靠近相机的3D物体会覆盖它。我试图弄清楚为什么文本没有写在屏幕空间。我猜测它是在深度为0的视图空间中,当从前到后绘制时,导致深度较低的物体覆盖它。但是,我不确定,我仍然不知道如何解决它。我已经尝试搞乱我的矩阵调用,但我总是得到相同的结果(或根本没有文本)。以下是我在每个循环中渲染所有内容的方法:

    private void initProjection()
        {       
            glEnable(GL_TEXTURE_2D);
            glEnable(GL_BLEND);
            glBlendFunc(GL_SRC_ALPHA, GL_ZERO);
        }

        public void to2D()
        {
            glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            glClearDepth(1);
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            gluOrtho2D(0, 640, 480, 0); 
            glMatrixMode(GL_MODELVIEW); 
            glLoadIdentity();
            glDisable(GL_DEPTH_TEST);
            glDisable(GL_LIGHTING); 
        }

        public void to3D()
        {
            glMatrixMode(GL_PROJECTION);
            glLoadIdentity();
            gluPerspective(fov, aspect, near, far);
            glMatrixMode(GL_MODELVIEW); 
            glLoadIdentity();
            glEnable(GL_LIGHTING);  
            glEnable(GL_DEPTH_TEST);
        }

    public void setView()
        {   
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
            to2D(); 

            font.drawString(320, 240, "Hello", Color.green);

            to3D();

            //3D stuff
        }   

0 个答案:

没有答案