尖锐的动画问题



所以我正在编写一个程序,该程序用XYZ点解析文件并制作一堆连接的行。我要做的是为每行绘制的每一行动画。我试图使用VBO和显示列表来提高性能(因为我正在处理大量数据点,即1,000,000点),但是我无法弄清楚如何在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();
            }

我知道立即模式是我的超级noobzore5000,但是我找不到任何vbo或显示列表的尖锐示例。因此,知道我要做的是在绘制每行之后"重新绘制"图片。我认为当调用冲洗方法时,它将所有内容都吸引到那个点。但是它仍然"批处理"它,并立即显示所有数据,我该如何对此进行动画?我非常绝望,我认为对于这么简单的任务来说,彻底学习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++;
        }

vbo:

 private void glControl1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 {
 GL.DrawArrays(PrimitiveType.LineStrip, 0, animationCount);
 animationCount++;
 }

相关内容

  • 没有找到相关文章

最新更新