【问题标题】:SharpGL Animation QuestionsSharpGL 动画问题
【发布时间】:2014-05-28 22:59:09
【问题描述】:

所以我正在编写一个程序,它用 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,但我找不到任何 SharpGL 的 VBO 或显示列表示例。所以知道我想要做的是在绘制每条线后“重绘”图片。我认为当调用 flush 方法时,它会将所有内容绘制到该点。但它仍然“批处理”它,并一次显示所有数据,我该如何制作动画?我非常绝望,我认为彻底学习 OpenGL 或 DirectX 对于这样一个简单的任务并不实用。

【问题讨论】:

    标签: performance opengl animation graphics sharpgl


    【解决方案1】:

    经过大量修改后,我选择了 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++;
     }
    

    【讨论】:

    • 第一个代码sn-p会产生OpenGL错误。在glBegin()glEnd() 之间调用glFlush() 会导致GL_INVALID_OPERATION 错误。如果它有效,它也会非常慢。
    • 糟糕,我忘了删除它。然而,问题是如何制作动画,而不是如何提高性能。上述解决方案有效,无论需要多长时间。
    猜你喜欢
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2012-10-08
    • 2011-03-28
    相关资源
    最近更新 更多