首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpGL动画问题

SharpGL动画问题
EN

Stack Overflow用户
提问于 2014-03-07 20:45:52
回答 1查看 624关注 0票数 1

因此,我正在编写一个程序,它用xyz点解析文件,并生成一串连接的线路。我想做的是画出每条线的动画。为了提高性能,我尝试使用VBO和显示列表(因为我正在处理大量的数据点,即1,000,000点),但我想不出如何在SharpGL中使用它们。因此,我现在用于绘制的代码如下:

代码语言:javascript
复制
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或显示列表。所以,知道我要做的是‘重新绘制’的图片后,每一条线是绘制。我想当这个方法被调用时,它会把所有的东西都画到那个点。但它仍然‘批’它,并显示所有的数据在一次,我如何能够动画?我非常绝望,我不认为彻底学习OpenGL或DirectX对于这么简单的任务是可行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 14:41:03

经过大量的修改后,我选择了使用OpenTK,因为我最终找到了适用于SharpGL的VBO,而且性能与OpenTK相比非常糟糕。我会给出一个关于如何以我想要的方式动画的答案。

我的解决方案与立即模式和使用VBO的。主要的概念是使一个成员整数(animationCount),您增加每次您的油漆函数被调用,并绘制到这个数字。

即时模式:

代码语言:javascript
复制
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:

代码语言:javascript
复制
 private void glControl1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
 {
 GL.DrawArrays(PrimitiveType.LineStrip, 0, animationCount);
 animationCount++;
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22260341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档