コード例 #1
0
        public ParticleCloud(int pointCount, int pointSize)
        {
            this.pointCount = pointCount;

            // generate points
            //
            Vector3[] generatedPoints = new Vector3[pointCount];

            Random random = new Random();
            double radius, latitude, longitude;
            float x, y, z;
            Diameter = pointCount;
            for (int i = 0; i < pointCount; i++)
            {
                radius = 1 + (pointCount - (random.NextDouble() * pointCount));
                longitude = Math.PI - (random.NextDouble() * (2 * Math.PI));
                latitude = (random.NextDouble() * Math.PI);

                x = (float)(radius * 2 * Math.Cos(longitude) * Math.Sin(latitude));
                z = (float)(radius * 2 * Math.Sin(longitude) * Math.Sin(latitude));
                y = (float)(radius * 2 * Math.Cos(latitude) + 10);
                generatedPoints[i] = new Vector3(x, y, z);
            }

            // create VBOs
            //
            staticVbo = new StaticVBO(generatedPoints, new Vector2[4]); // 0 set for tex coords

            // create image
            //
            Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("TK_TestBed.Resources.circle.png"));
            pointSpriteImage = new PointSpriteImage(bmp);

            // init GL
            //
            GL.GetFloat(GetPName.PointSizeMax, out pointMaxSize);
            // Do not allow point sprites to exceed max size allowed by graphics card
            if (pointSize > (int)pointMaxSize) pointSize = (int)pointMaxSize;
        }
コード例 #2
0
 public PointSpriteImage(Bitmap bitmap)
 {
     StaticVbo = new StaticVBO(new Vector3[4], new Vector2[4]); // quad + tex coords
     Load(bitmap);
 }