为什么我的文字不会出现?

时间:2009-04-13 21:20:23

标签: java string opengl bitmap jogl

由于某些我无法理解生命的原因,我的JOGL hello world程序中的文字根本不会显示出来。我将包括显示方法,以便你们都知道我在说什么。

public void display(GLAutoDrawable gLDrawable)
    {
        final GL gl = gLDrawable.getGL();
        final GLU glu = new GLU();
        GLUT glut = new GLUT();
        gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
        gl.glLoadIdentity();
        glu.gluLookAt(0f,0f,0f,0f,0f,-800f,0,1,0);
        gl.glTranslatef(0.0f,0.0f,5.0f);
        gl.glColor3f(1f, 1f, 1f);

        gl.glRasterPos2f(250f,250f);

        glut.glutBitmapString(GLUT.BITMAP_HELVETICA_18, "Hello World!");

        gl.glFlush();
    }

3 个答案:

答案 0 :(得分:1)

我尝试了一些mods,但我也无法显示任何内容。

gluLookAt调用肯定是坏的:你把相机放在(0,0,0)并朝着z = -800看,但你把文字放在z = 0。显然没有任何东西会出现。

我还注意到你没有调用通常应该做的glViewport()来将场景映射到组件中。

你在这里几乎可以肯定是GL问题,而不是JOGL问题。请查看OpenGL编程指南中的故障排除提示。如果您没有副本,并且将要进行任何重要的GL编程,我建议您获得一个。我也会用在同一个地方绘制的多边形替换你的文字。当我这样做时,没有任何显示,所以它几乎肯定是一个矩阵问题,与你的文本没有任何关系。当您显示多边形时,可以将其替换为文本。一次消除一个问题。您也可以尝试将opengl标记添加到此问题中,因为这会吸引一些专业的OpenGL程序员。

答案 1 :(得分:0)

我没有使用过JOGL,但是在使用C ++的OpenGL中,你需要在刷新之后交换GLUT的缓冲区:

glutSwapBuffers();

JOGL中的等价物可能是:

glut.glutSwapBuffers();

gl.glFlush();

之后

答案 2 :(得分:0)

我不喜欢

中的-800f
glu.gluLookAt(0f,0f,0f,0f,0f,-800f,0,1,0);

尝试调整此数字。甚至可能删除整个LookAt方法调用,你不应该那样。

修改 它也可能是一个照明问题。您似乎没有指定任何光源,也没有以任何方式启用照明。也许你的文字会被显示,但就像背景一样黑暗......