Esempio n. 1
0
 public override GlCallResult GlRender()
 {
     return(GlRenderHandler.GlCall(() =>
     {
         Mesh.GlRender();
     }, true));
 }
Esempio n. 2
0
 protected override GlCallResult GlBufferData()
 {
     // TODO Might be able to optimise SizeOf.
     return(GlRenderHandler.GlCallSync(() =>
     {
         GL.BufferData(BufferTarget.ArrayBuffer, Marshal.SizeOf(_vertices), ref _vertices[0],
                       BufferUsageHint.StaticDraw);
     }));
 }
Esempio n. 3
0
        public override GlCallResult _glDispose()
        {
            return(GlRenderHandler.GlCall(() =>
            {
                GL.DeleteBuffers(1, ref GlElementBuffer);
                GL.DeleteBuffers(Enum.GetNames(typeof(VertexBuffer)).Length, GlBuffers);

                GL.DeleteVertexArray(GlVao);
            }));
        }
Esempio n. 4
0
 public GlCallResult GlRender()
 {
     return(GlRenderHandler.GlCall(() =>
     {
         GL.BindVertexArray(GlVao);
         GL.BindBuffer(BufferTarget.ElementArrayBuffer, GlElementBuffer);
         GL.DrawElements(PrimitiveType.Triangles, _numIndices, DrawElementsType.UnsignedInt, 0);
         GL.BindVertexArray(0);
     }, true));
 }
Esempio n. 5
0
        public override GlCallResult _glInitialise()
        {
            return(GlRenderHandler.GlCall(() =>
            {
                GlWrapModeX = TextureWrapMode.Repeat;
                GlWrapModeY = TextureWrapMode.Repeat;

                GlTextureMinFilter = new GlEventTextureFilter(TextureMagFilter.Linear);
                GlTextureMagFilter = new GlEventTextureFilter(TextureMagFilter.Linear);
            }));
        }
Esempio n. 6
0
        public override GlCallResult _glInitialise()
        {
            return(GlRenderHandler.GlCall(() =>
            {
                GL.GenVertexArrays(1, out GlVao);
                GL.BindVertexArray(GlVao);

                // Element Buffer
                GL.GenBuffers(1, out GlElementBuffer);
                GL.BindBuffer(BufferTarget.ElementArrayBuffer, GlElementBuffer);
                GL.BufferData(BufferTarget.ElementArrayBuffer, _indices.Length * Marshal.SizeOf(typeof(uint)),
                              _indices, BufferUsageHint.StaticDraw);
                _numIndices = _indices.Length;
                _indices = null;

                // Vertex Buffers
                var bufferLength = Enum.GetNames(typeof(VertexBuffer)).Length;
                GlBuffers = new uint[bufferLength];
                GL.GenBuffers(bufferLength, GlBuffers);

                GL.BindBuffer(BufferTarget.ArrayBuffer, GlBuffers[(int)VertexBuffer.Pos]);

                #if DEBUG
                var result = GlBufferData();
                if (!result.Synchronised)
                {
                    throw new InvalidAsynchronousStateException("GlBufferData() should be executing synchronised.");
                }
                #else
                GlBufferData();
                #endif

                GL.EnableVertexAttribArray((int)VertexBuffer.Pos);
                GL.VertexAttribPointer((int)VertexBuffer.Pos, _dimensions, VertexAttribPointerType.Float, false, 0, 0);

                GL.BindVertexArray(0);
            }));
        }
Esempio n. 7
0
 public override GlCallResult _glDispose()
 {
     return(GlRenderHandler.GlCall(() => { }));
 }
Esempio n. 8
0
 public override GlCallResult _glInitialise()
 {
     return(GlRenderHandler.GlCall(() => { }));
 }