public SnowParticleSystem(int maxParticles,Vector3 origin, Vector3 size) :base (maxParticles, origin) { height = size.Y; width = size.X; depth = size.Z; texture = GL.GenTexture(); GL.BindTexture(TextureTarget.Texture2D, texture); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMagFilter.Linear); GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear); Bitmap bmp = new Bitmap("Assets/snow.png"); BitmapData bmp_data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, bmp_data.Width, bmp_data.Height, 0, OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, bmp_data.Scan0); bmp.UnlockBits(bmp_data); bmp.Dispose(); }
public virtual void Render() { // Again, Vector3 and Matrix4 must be fully scoped, because // the OpenTK namespace contains both classes already Math_Implementation.Vector3 eyePos = new Math_Implementation.Vector3(); eyePos.X = _baseCameraAngle.Z * -(float)System.Math.Sin(_baseCameraAngle.X * _baseRads * (float)System.Math.Cos(_baseCameraAngle.Y * _baseRads)); eyePos.Y = _baseCameraAngle.Z * -(float)System.Math.Sin(_baseCameraAngle.Y * _baseRads); eyePos.Z = -_baseCameraAngle.Z * (float)System.Math.Cos(_baseCameraAngle.X * _baseRads * (float)System.Math.Cos(_baseCameraAngle.Y * _baseRads)); Math_Implementation.Matrix4 lookAt = Math_Implementation.Matrix4.LookAt(eyePos, new Math_Implementation.Vector3(0.0f, 0.0f, 0.0f), new Math_Implementation.Vector3(0.0f, 1.0f, 0.0f)); GL.LoadMatrix(Math_Implementation.Matrix4.Transpose(lookAt).Matrix); }