Почему мой текст не отображается? - PullRequest
1 голос
/ 14 апреля 2009

По какой-то причине, которую я не могу понять на всю жизнь, мой текст в моей программе 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 ]

1 голос
/ 14 апреля 2009

Я попробовал несколько модов на этом, но я тоже ничего не могу показать.

Вызов gluLookAt определенно был плохим: вы устанавливали камеру в (0,0,0) и смотрели в направлении z = -800, а текст в z = 0. Ясно, что ничего не появится.

Я также заметил, что вы не вызвали glViewport (), который вы обычно должны делать, чтобы отобразить вашу сцену в компонент.

То, что у вас есть, это почти наверняка проблема GL, а не проблема JOGL. Ознакомьтесь с советами по устранению неполадок в Руководстве по программированию OpenGL. Если у вас нет копии, и вы собираетесь заниматься каким-либо значительным программированием GL, я рекомендую вам ее получить. Я бы также заменил ваш текст на многоугольник, нарисованный там же. Когда я это делаю, ничего не появляется, так что это почти наверняка проблема с матрицей, не связанная с вашим текстом. Когда вы увидите многоугольник, вы можете заменить его текстом. Устранить одну проблему за один раз. Вы также можете попробовать добавить тег opengl к этому вопросу, поскольку это привлечет некоторых опытных программистов OpenGL.

0 голосов
/ 14 апреля 2009

Мне не нравится -800f в

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

попробуйте настроить этот номер. Возможно, даже удалить весь вызов метода LookAt, вам это не нужно.

Редактировать Это может быть и проблема освещения. Похоже, вы не указали источник света и не включили освещение. Может быть, ваш текст отображается, но так же темно, как фон ...

0 голосов
/ 14 апреля 2009

Я не использовал JOGL, но в OpenGL с C ++ вам нужно поменять местами буферы GLUT после очистки:

glutSwapBuffers();

Эквивалент в JOGL, вероятно, будет:

glut.glutSwapBuffers();

после gl.glFlush ();

...