由于某些我无法理解生命的原因,我的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 :(得分: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)
我不喜欢
中的-800fglu.gluLookAt(0f,0f,0f,0f,0f,-800f,0,1,0);
尝试调整此数字。甚至可能删除整个LookAt方法调用,你不应该那样。
修改强> 它也可能是一个照明问题。您似乎没有指定任何光源,也没有以任何方式启用照明。也许你的文字会被显示,但就像背景一样黑暗......