Performance SharpGL动画问题

Performance SharpGL动画问题,performance,opengl,animation,graphics,sharpgl,Performance,Opengl,Animation,Graphics,Sharpgl,因此,我正在编写一个程序,用xyz点解析文件,并生成一组连接线。我想做的是给每一条画的线设置动画。我曾尝试使用VBO和显示列表来提高性能(因为我正在处理大量数据点,即1000000个点),但我不知道如何在SharpGL中使用它们。所以我现在用来画的代码如下: private void drawInput(OpenGL gl) { gl.Begin(OpenGL.GL_LINE_STRIP); for (in

因此,我正在编写一个程序,用xyz点解析文件,并生成一组连接线。我想做的是给每一条画的线设置动画。我曾尝试使用VBO和显示列表来提高性能(因为我正在处理大量数据点,即1000000个点),但我不知道如何在SharpGL中使用它们。所以我现在用来画的代码如下:

private void drawInput(OpenGL gl)
            {

                gl.Begin(OpenGL.GL_LINE_STRIP);
                for (int i = 0; i < parser.dataSet.Count; i++)
                {


                    gl.Color((float) i, 3.0f, 0.0f);
                    gl.Vertex(parser.dataSet[i].X, parser.dataSet[i].Y, parser.dataSet[i].Z);
                    gl.Flush();
                }
                gl.End();

            }
private void drawInput(OpenGL)
{
gl.Begin(OpenGL.gl\u LINE\u STRIP);
for(int i=0;i

我知道即时模式是我的超级noobzore5000,但我找不到任何VBO或显示列表的SharpGL示例。所以我想做的是在画完每一条线后“重画”这幅画。我认为当调用flush方法时,它会将所有内容绘制到该点。但它仍然“批量”它,并显示所有的数据在一次,我如何才能动画这一点?我非常绝望,我不认为彻底学习OpenGL或DirectX对于这么简单的任务是切实可行的。

经过大量的修补,我选择使用OpenTK,因为我最终找到了SharpGL的VBO,与OpenTK相比,性能非常差。我将给出一个关于如何以我想要的方式制作动画的答案

我的解决方案使用即时模式并使用VBO。主要概念是使成员整数(animationCount)在每次调用绘制函数时增加,并绘制到该数字

即时模式:

private void drawInput(OpenGL gl)
        {

            gl.Begin(OpenGL.GL_LINE_STRIP);
            for (int i = 0; i < animationCount; i++)
            {


                gl.Color((float) i, 3.0f, 0.0f);
                gl.Vertex(parser.dataSet[i].X, parser.dataSet[i].Y, parser.dataSet[i].Z);
            }
            gl.End();

            animationCount++;
        }

第一个代码段将产生OpenGL错误。在
glBegin()
glEnd()
之间调用
glFlush()
,会导致
GL\u无效\u操作
错误。如果它能工作的话,速度也会非常慢。哎呀,我忘了把它去掉。然而,问题是如何设置动画,而不是如何提高性能。无论需要多长时间,上述解决方案都有效。
 private void glControl1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 {
 GL.DrawArrays(PrimitiveType.LineStrip, 0, animationCount);
 animationCount++;
 }