【问题标题】:Why won't my text show up?为什么我的文字不显示?
【发布时间】:2009-04-13 21:20:22
【问题描述】:

由于某种我终生无法弄清楚的原因,我在 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();
    }

【问题讨论】:

    标签: java string opengl bitmap jogl


    【解决方案1】:

    我对此进行了一些修改,但我也无法显示任何内容。

    gluLookAt 调用确实很糟糕:您将相机放置在 (0,0,0) 并朝向 z=-800,但您将文本放置在 z=0。显然什么都不会显示。

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

    您在这里遇到的问题几乎可以肯定是 GL 问题,而不是 JOGL 问题。查看 OpenGL 编程指南中的故障排除提示。如果您没有副本,并且打算进行任何重要的 GL 编程,我建议您获得一份。我还将用在同一位置绘制的多边形替换您的文本。当我这样做时,什么都没有出现,所以几乎可以肯定这是一个矩阵问题,与您的文本无关。当您显示多边形时,您可以将其替换为文本。一次解决一个问题。您也可以尝试在这个问题中添加 opengl 标签,因为这会吸引一些专业的 OpenGL 程序员。

    【讨论】:

      【解决方案2】:

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

      glutSwapBuffers();
      

      JOGL 中的等价物可能是:

      glut.glutSwapBuffers();
      

      gl.glFlush() 之后;

      【讨论】:

      【解决方案3】:

      我不喜欢 -800f 中的

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

      尝试调整这个数字。也许甚至删除整个 LookAt 方法调用,你不应该需要它。

      编辑 这也可能是照明问题。您似乎没有指定任何光源,也没有以任何方式启用照明。也许您的文本已显示,但与背景一样暗......

      【讨论】:

      • 删除并尝试修改glulookat,但问题仍然存在。
      • 是纯文本问题吗?当你渲染一个立方体时,你能看到它吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 1970-01-01
      • 2016-10-05
      • 1970-01-01
      相关资源
      最近更新 更多