java - JOGL 无法弄清楚为什么绘制的线没有出现

标签 java opengl jogl

我正在尝试学习 JOGL,但首先在 Canvas 上绘制线条(如边框)​​,但我不明白为什么线条没有显示!我猜我没有正确设置视口(viewport)。

下面是一些代码片段:

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();
}

最佳答案

是否启用双缓冲?尝试在渲染后调用 drawable.swapBuffers()

关于java - JOGL 无法弄清楚为什么绘制的线没有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9508940/

相关文章:

java - JOGL glBufferData 与 glVertexAttribPointer 不起作用

java - OpenGL ATI 与 NVIDIA GLSL 问题

java - 定义 OpenSessionInViewFilter 时出错

java - JOGL 立方体问题入门

java - 什么是NullPointerException,我该如何解决?

java - JOGL/OPENGL 中的大型线带管理...?

opengl - 通过计算着色器在 OpenGL 中进行光线追踪

c++ - Mac OSX 10.9 中的 Glut 弃用,IDE : QT Creator

java - 在 TLS1.2 上创建 ActiveMQ 连接

java - Liferay 定制 portlet,无钩子(Hook)