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; }
public PointSpriteImage(Bitmap bitmap) { StaticVbo = new StaticVBO(new Vector3[4], new Vector2[4]); // quad + tex coords Load(bitmap); }