如何使用OpenTK和C#构建圆锥和圆柱体?

时间:2019-01-11 20:59:35

标签: c# opengl opentk

我需要使用OpenGL 3.0在OpenTK中构建圆锥体和/或圆柱体,因此我需要使用PrimitiveType。

生成所有数据和索引后,需要使用

加载它们

List()数据

List()索引

我需要使用OpenGL 3.0在OpenTK中构建圆锥体和/或圆柱体,因此我需要使用PrimitiveType。

生成所有数据和索引后,需要使用

加载它们

List()数据

List()索引

        int segments = 26; //26  
        int radius = 40;
        int height = 50;

        double X = 0;
        double Y = 0;
        double Z = 0;

        var data = new List<float>();
        var indices = new List<uint>();

        for (double y = 0; y < 2; y++)
        {
            for (double x = 0; x < height; x++)
            {
                double theta = (x / (segments - 1)) * 3 * Math.PI;

                X = (float)radius * Math.Cos(theta);
                Y = (float)height * y;
                Z = (float)radius * Math.Sin(theta);

                data.Add(DataConverter.ToFloat(X));
                data.Add(DataConverter.ToFloat(Y));
                data.Add(DataConverter.ToFloat(Z));
            }
        }


        for (int x = 0; x < segmente ; x++)
        {  
            indices.Add((uint)x);
            indices.Add((uint)(x + segments));
            indices.Add((uint)(X + segments + 1));


            indices.Add((uint)(x + segments + 1));
            indices.Add((uint)(x + segments));
            indices.Add((uint)x);

            object = Matrix4.CreateTranslation(position);
        }

这将生成一个圆柱,其内部像一个con,但是我不知道为什么,如果我放更多的线段,它将变成圆锥体而不是圆柱体。

在这里找到了这个公式,我将其调整为适用于新的OpenGL 3.0版本。

0 个答案:

没有答案