示例#1
0
        static Graphics()
        {
            QuadShader = Assets.Shaders["screenquad"];

            screenQuad = new VertexArray();

            vbo = new Buffer <float>();
            vbo.Initialize(new[] {
                -1f, -1f, 0, 0,
                1f, -1f, 1, 0,
                -1f, 1f, 0, 1,
                1f, 1f, 1, 1,
            }, BufferUsageHint.StaticDraw);

            ebo = new Buffer <uint>();
            ebo.Initialize(new uint[] {
                0, 1, 2,
                2, 1, 3
            }, BufferUsageHint.StaticDraw);

            screenQuad.SetBuffer(BufferTarget.ArrayBuffer, vbo);
            screenQuad.SetBuffer(BufferTarget.ElementArrayBuffer, ebo);

            screenQuad.AttribPointer(QuadShader.GetAttribLocation("vPos"), 2, VertexAttribPointerType.Float, false, sizeof(float) * 4, 0);
            screenQuad.AttribPointer(QuadShader.GetAttribLocation("texCoords"), 2, VertexAttribPointerType.Float, false, sizeof(float) * 4, sizeof(float) * 2);
        }
示例#2
0
        static Draw()
        {
            // Init Sprite
            spriteVbo = new Buffer <float>();
            spriteVbo.Initialize(new float[] {
                -.5f, -.5f, 0f, 1, 0,
                -.5f, .5f, 0f, 0, 0,
                .5f, -.5f, 0f, 1, 1,
                .5f, .5f, 0f, 0, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            spriteEbo = new Buffer <uint>();
            spriteEbo.Initialize(new uint[] {
                0, 1, 2,
                3, 2, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            spriteVao = new VertexArray();
            spriteVao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, spriteVbo);
            spriteVao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, spriteEbo);

            spriteVao.AttribPointer(Program.StandardShader.GetAttribLocation("v_pos"), 3, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 5, 0);
            spriteVao.AttribPointer(Program.StandardShader.GetAttribLocation("v_uv"), 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 5, sizeof(float) * 3);

            // Init cube
        }
示例#3
0
        public void Init()
        {
            if (IsInitialized)
            {
                //throw new Exception("Mesh is already initialized");
                Console.WriteLine("skipping Mesh init() because it was already initialized");
                return;
            }

            vao = new VertexArray();

            vbo = new Buffer <Vertex>();
            vbo.Initialize(vertices.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            ebo = new Buffer <uint>();
            ebo.Initialize(indices.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo);
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo);


            vao.AttribPointer(0, 3, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, 0);
            vao.AttribPointer(1, 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, sizeof(float) * 3);
            vao.AttribPointer(2, 3, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 8, sizeof(float) * 5);
        }
示例#4
0
        protected override void Load()
        {
            shader = CreateShader(File.ReadAllText("data/frag.glsl"), File.ReadAllText("data/vert.glsl"));

            #region init buffers
            vbo = new Buffer <float>();
            vbo.Initialize(new float[] {
                -.5f, -.5f, 1, 0,
                -.5f, .5f, 0, 0,
                .5f, -.5f, 1, 1,
                .5f, .5f, 0, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            ebo = new Buffer <uint>();
            ebo.Initialize(new uint[] {
                0, 1, 2,
                3, 2, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            vao = new VertexArray();
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo);
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo);

            vao.AttribPointer(shader.GetAttribLocation("pos"), 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 4, 0);
            vao.AttribPointer(shader.GetAttribLocation("uv"), 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 4, sizeof(float) * 2);
            #endregion

            xtexture = new Texture2D(Resource1.xchar);
            otexture = new Texture2D(Resource1.ochar);

            Window.MouseDown += Window_MouseDown;
        }
示例#5
0
        static Graphics()
        {
            vbo = new Buffer <float>();
            vbo.Initialize(new float[] {
                -.5f, -.5f,
                -.5f, .5f,
                .5f, -.5f,
                .5f, .5f,
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);


            ebo = new Buffer <uint>();
            ebo.Initialize(new uint[] {
                0, 2, 1,
                3, 1, 2
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);


            vao = new VertexArray();
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo);
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo);


            vao.AttribPointer(0, 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 2, 0);

            var glerror = GL.GetError();

            if (glerror != ErrorCode.NoError)
            {
                Console.WriteLine(glerror + " after loading User interface graphics");
            }
        }
示例#6
0
        static Sphere()
        {
            var verts  = new List <float>();
            var indces = new List <uint>();
            var delta  = (PI * 2) / 12;

            for (int i = 0; i < 12; i++)
            {
                verts.Add((float)Cos(i * delta));
                verts.Add((float)Sin(i * delta));
                indces.Add(12);
                indces.Add((uint)i);
                if (i == 11)
                {
                    indces.Add(0);
                }
                else
                {
                    indces.Add((uint)i + 1);
                }
            }
            verts.Add(0); verts.Add(0);


            vbo = new Buffer <float>();
            vbo.Initialize(verts.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);
            ebo = new Buffer <uint>();
            ebo.Initialize(indces.ToArray(), OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            vao = new VertexArray();
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo);
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo);

            vao.AttribPointer(Program.shader.GetAttribLocation("pos"), 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 2, 0);
        }
示例#7
0
        protected override void Load()
        {
            shader = CreateShader(System.IO.File.ReadAllText("data/frag.glsl"), System.IO.File.ReadAllText("data/vert.glsl"));
            shader.Use();

            var vbo = new Buffer <float>();

            vbo.Initialize(new float[] {
                -1, -1,
                -1, 1,
                1, -1,
                1, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            var ebo = new Buffer <uint>();

            ebo.Initialize(new uint[] {
                0, 1, 2,
                3, 2, 1
            }, OpenTK.Graphics.OpenGL4.BufferUsageHint.StaticDraw);

            vao = new VertexArray();
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ArrayBuffer, vbo);
            vao.SetBuffer(OpenTK.Graphics.OpenGL4.BufferTarget.ElementArrayBuffer, ebo);

            vao.AttribPointer(shader.GetAttribLocation("v_pos"), 2, OpenTK.Graphics.OpenGL4.VertexAttribPointerType.Float, false, sizeof(float) * 2, 0);


            Window.MouseWheel += Window_MouseWheel;
            Window.MouseMove  += Window_MouseMove;
        }
示例#8
0
        static Skybox()
        {
            shader = Assets.Shaders["skybox"];

            boxvao = new VertexArray();

            vbo = new Buffer <float>();
            vbo.Initialize(new float[] {
                -1.0f, 1.0f, -1.0f,
                -1.0f, -1.0f, -1.0f,
                1.0f, -1.0f, -1.0f,
                1.0f, -1.0f, -1.0f,
                1.0f, 1.0f, -1.0f,
                -1.0f, 1.0f, -1.0f,

                -1.0f, -1.0f, 1.0f,
                -1.0f, -1.0f, -1.0f,
                -1.0f, 1.0f, -1.0f,
                -1.0f, 1.0f, -1.0f,
                -1.0f, 1.0f, 1.0f,
                -1.0f, -1.0f, 1.0f,

                1.0f, -1.0f, -1.0f,
                1.0f, -1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, -1.0f,
                1.0f, -1.0f, -1.0f,

                -1.0f, -1.0f, 1.0f,
                -1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, -1.0f, 1.0f,
                -1.0f, -1.0f, 1.0f,

                -1.0f, 1.0f, -1.0f,
                1.0f, 1.0f, -1.0f,
                1.0f, 1.0f, 1.0f,
                1.0f, 1.0f, 1.0f,
                -1.0f, 1.0f, 1.0f,
                -1.0f, 1.0f, -1.0f,

                -1.0f, -1.0f, -1.0f,
                -1.0f, -1.0f, 1.0f,
                1.0f, -1.0f, -1.0f,
                1.0f, -1.0f, -1.0f,
                -1.0f, -1.0f, 1.0f,
                1.0f, -1.0f, 1.0f
            }, BufferUsageHint.StaticDraw);


            boxvao.SetBuffer(BufferTarget.ArrayBuffer, vbo);

            boxvao.AttribPointer(0, 3, VertexAttribPointerType.Float, false, sizeof(float) * 3, 0);
        }