2009-04-13 124 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程序員。