首页 文章

如何使用sharpgl绘制线条(C#)

提问于
浏览
1

我正在尝试使用sharpgl在c#中绘制线条但是当我编译代码时它给了我充满白色颜色的控制台而不是线条,如何解决这个问题或者我的代码中有任何错误 . 这是代码 .

private static int width = 400, height = 300;
static void Main(string[] args)
{

Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB);
Glut.glutInitWindowSize(width, height);
Glut.glutCreateWindow("OpenGL Tutorial");

init();
Glut.glutDisplayFunc(OnDisplay);
Glut.glutMainLoop();
}
private static void OnDisplay()
{
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glColor3f(0.0f, 0.4f, 0.2f);
Gl.glBegin(Gl.GL_LINES);

Gl.glVertex2i(180, 15);
Gl.glVertex2i(10, 145);
Gl.glEnd();
Gl.glFlush();
}
static void init()
{
Gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f);
Gl.glMatrixMode(Gl.GL_PROJECTION);
Gl.glOrtho(0.0, 200.0, 0.0, 1.0, -1.0, 1.0);

}

1 回答

  • 3

    您的线完全在可见坐标范围之外 . 对 glOrtho() 的调用指定了映射到窗口矩形的坐标范围:

    Gl.glOrtho(0.0, 200.0, 0.0, 1.0, -1.0, 1.0);
    

    该调用的第3和第4个参数定义了底部和顶部,即y坐标的范围 . 因此,y坐标的可见范围将是[0.0,1.0] .

    在为您的行指定的顶点中:

    Gl.glVertex2i(180, 15);
    Gl.glVertex2i(10, 145);
    

    两个顶点都远远超出此范围,y坐标为15和145 .

    如果扩展y坐标的范围,您应该能够看到该线 . 例如,使用与x坐标相同的范围:

    Gl.glOrtho(0.0, 200.0, 0.0, 200.0, -1.0, 1.0);
    

相关问题