JOGL не может понять, почему нарисованные линии не появляются - PullRequest
1 голос
/ 01 марта 2012

Я пытаюсь выучить 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();
}

1 Ответ

1 голос
/ 01 марта 2012

Включена ли двойная буферизация? Попробуйте позвонить drawable.swapBuffers() после рендеринга.

...