2009-04-13 123 views
1

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

回答

0

我没有使用JOGL,但在OpenGL中使用C++,你需要冲洗后替换GLUT的缓冲区:

glutSwapBuffers(); 

在JOGL等效很可能是:

glut.glutSwapBuffers(); 
gl.glFlush();之后的

;

+0

根据API,没有这样的运气。根本没有交换方法/函数:http://download.java.net/media/jogl/builds/nightly/javadoc_public/com/sun/opengl/util/GLUT.html – William 2009-04-13 21:38:18

+0

他实际上并没有使用GLUT对象,只是创造它。 – DJClayworth 2009-04-14 15:30:32

0

我不喜欢

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

的-800f尝试调整这个数字。也许甚至删除整个LookAt方法调用,你不应该需要这样做。

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

1

我试了一些mods,但我不能让任何东西显示。

gluLookAt调用绝对不好:您将相机放在(0,0,0)并朝z = -800方向看,但是您将文本置于z = 0处。显然没有任何东西会出现。

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

你在这里有什么几乎肯定是GL问题,而不是JOGL问题。查看“OpenGL编程指南”中的疑难解答提示。如果您没有副本,并且将要执行任何重要的GL编程,我建议您获得一个。我也会用同一个地方绘制的多边形替换你的文本。当我这样做时什么也没有显示,所以它几乎肯定是一个矩阵问题,而不是与你的文本有关。当你得到多边形出现时,你可以用文本替换它。一次消除一个问题。你也可以尝试在这个问题中加入opengl标签,因为这会吸引一些专家OpenGL程序员。