Esempio n. 1
0
 public void Draw(Position[] positions, int length, float time)
 {
     using (var programBinding = program.Use())
     {
         programBinding.Set(timeUniform, time);
         programBinding.Set(scaleUniform, 0.05f);
         using (var ivboBinding = ivbo.BindBuffer())
         {
             ivboBinding.Data((uint)Marshal.SizeOf <Position>() * MAX_BULLETS, null, BufferUsage.StreamDraw);
             ivboBinding.SubData(0, (uint)Marshal.SizeOf <Position>() * (uint)length, positions);
         }
         using (var vaoBinding = vao.BindVertexArray())
         {
             vaoBinding.DrawArraysInstanced(PrimitiveType.TriangleStrip, 0, 4, length);
         }
     }
 }
Esempio n. 2
0
        internal void Draw(Position[] positions, int count, float time)
        {
            using (var programBinding = program.Use())
            {
                programBinding.Set(scaleUniform, .1f);
                programBinding.Set(timeUniform, time);

                using (var ivboBinding = ivbo.BindBuffer())
                {
                    ivboBinding.Data((uint)Marshal.SizeOf <Position>() * MAX_SHIPS, null, BufferUsage.StreamDraw);
                    ivboBinding.SubData(0, (uint)Marshal.SizeOf <Position>() * (uint)count, positions);
                }

                using (var vaoBinding = vao.BindVertexArray())
                    vaoBinding.DrawArraysInstanced(PrimitiveType.Triangles, 0, 3, count);
            }
        }