2012-03-01 11 views
1

JOGLを学習しようとしていますが、キャンバスに最初に線を描いていますが、なぜ線が表示されないのか分かりません。ビューポートを正しく設定していないと思います。以下はJOGLは描画された線が表示されない理由を理解できません

は、いくつかのコードスニペットです:

private static final float DISTANCE_FROM_EDGE = 25.0f; 

@Override 
public void init(GLAutoDrawable drawable) 
{ 
    GL2 gl = drawable.getGL().getGL2(); 
    drawable.setGL(new DebugGL2(gl.getGL2())); 

    m_glu = new GLU(); 

    establishProjectionMatrix(gl , getWidth(), getHeight()); 

    gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);   
    gl.glEnable(GL2.GL_TEXTURE_2D); 
} 

@Override 
public void reshape(GLAutoDrawable drawable, 
        int x, 
        int y, 
        int width, 
        int height) 
{ 
    GL2 gl = drawable.getGL().getGL2(); 
    establishProjectionMatrix(gl , width, height); 
} 

public void establishProjectionMatrix(GL2 gl,int width,int height) 
{ 

    gl.glViewport(0, 0, width, height); 

    gl.glMatrixMode(GL2.GL_PROJECTION); 
    gl.glLoadIdentity(); 

    m_glu.gluOrtho2D(0,width,height,0); 
} 

@Override 
public void display(GLAutoDrawable drawable) 
{ 
    update(); 
    GL2 gl = drawable.getGL().getGL2(); 
    gl.glClear(GL2.GL_COLOR_BUFFER_BIT); 
    gl.glMatrixMode(GL2.GL_MODELVIEW); 
    gl.glLoadIdentity(); 
    drawBoundary(gl); 

} 

public void drawBoundary(GL2 gl) 
{ 
    gl.glPushMatrix(); 
    gl.glTranslatef(10.0f, 10.0f, 0.0f); 
    gl.glColor3f(0.0f, 0.1f, 0.0f); 
    //Draw left edge 
    drawLine(gl, -DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE); 
    //Draw top edge 
    drawLine(gl, -DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE); 
    //Draw right edge 
    drawLine(gl, DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE, DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE); 
    //Draw bottom edge 
    drawLine(gl, DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE, -DISTANCE_FROM_EDGE); 
    gl.glPopMatrix(); 
} 

private void drawLine(GL2 gl, float x1,float y1, float x2, float y2) 
{ 
    gl.glBegin(GL.GL_LINES); 
    gl.glVertex2f((x1), (y1)); 
    gl.glVertex2f((x2), (y2)); 
    gl.glEnd(); 
} 
+0

こんにちは@Foo、まだ助けが必要ですか? – elect

答えて

1

は、ダブルバッファリングを有効にしますか?レンダリング後にdrawable.swapBuffers()に電話してみてください。

+0

私はそれが可能だとは思っていません。私は、表示メソッドの最後に 'drawable.swapBuffers()'メソッドを実行しようとしましたが、違いはありませんでした。 – Foo

関連する問題