1

I was testing the SharpGL sample on winform, where it is rendering triangle on openGLDraw event. But when I am trying to render it with button click its not working. Is it supposed to not render outside of openGLDraw event ? Here are the codes:

private void DrawScene()
{
    OpenGL gl = openGLControl.OpenGL;
    gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
    gl.LoadIdentity();
    gl.Begin(OpenGL.GL_TRIANGLES);
    gl.Color(1.0f, 0.0f, 0.0f);
    gl.Vertex(0.0f, 1.0f, 0.0f);
    gl.Color(0.0f, 1.0f, 0.0f);
    gl.Vertex(-1.0f, -1.0f, 1.0f);
    gl.Color(0.0f, 0.0f, 1.0f);
    gl.Vertex(1.0f, -1.0f, 1.0f);
    gl.Color(1.0f, 0.0f, 0.0f);
    gl.Vertex(0.0f, 1.0f, 0.0f);
    gl.Color(0.0f, 0.0f, 1.0f);
    gl.Vertex(1.0f, -1.0f, 1.0f);
    gl.Color(0.0f, 1.0f, 0.0f);
    gl.Vertex(1.0f, -1.0f, -1.0f);
    gl.Color(1.0f, 0.0f, 0.0f);
    gl.Vertex(0.0f, 1.0f, 0.0f);
    gl.Color(0.0f, 1.0f, 0.0f);
    gl.Vertex(1.0f, -1.0f, -1.0f);
    gl.Color(0.0f, 0.0f, 1.0f);
    gl.Vertex(-1.0f, -1.0f, -1.0f);
    gl.Color(1.0f, 0.0f, 0.0f);
    gl.Vertex(0.0f, 1.0f, 0.0f);
    gl.Color(0.0f, 0.0f, 1.0f);
    gl.Vertex(-1.0f, -1.0f, -1.0f);
    gl.Color(0.0f, 1.0f, 0.0f);
    gl.Vertex(-1.0f, -1.0f, 1.0f);
    gl.End();
}

private void openGLControl_OpenGLDraw(object sender, RenderEventArgs e)
{
    //this.DrawScene(); //Working
}

private void button1_Click(object sender, EventArgs e)
{
    this.DrawScene(); //Not working
}
user4581301
  • 33,082
  • 7
  • 33
  • 54
Barun
  • 1,885
  • 3
  • 27
  • 47

1 Answers1

0

Just add openGLControl.Refresh(); after DrawScene(). It was fooling me for past few days. I discovered it after reading their source code. :D

private void button1_Click(object sender, EventArgs e)
{
    this.DrawScene(); //Not working
    openGLControl.Refresh(); 
}
Barun
  • 1,885
  • 3
  • 27
  • 47