OOGL.GUI.VertexStructures.PositionTexture.Draw C# (CSharp) Method

Draw() public static method

public static Draw ( BeginMode beginMode, PositionTexture vertexData, uint handleTexture ) : void
beginMode BeginMode
vertexData PositionTexture
handleTexture uint
return void
        public static void Draw(BeginMode beginMode, PositionTexture[] vertexData, uint handleTexture)
        {
            int primativeCount;
            switch (beginMode)
            {
                case BeginMode.Triangles: primativeCount = vertexData.Length / 3; break;
                case BeginMode.TriangleStrip: primativeCount = vertexData.Length - 2; break;
                default: throw new ArgumentException();
            }
            if (primativeCount == 0) return;


            GL.ActiveTexture(TextureUnit.Texture0);
            GL.Enable(EnableCap.Texture2D);
            GL.BindTexture(TextureTarget.Texture2D, handleTexture);
            
            GL.EnableClientState(EnableCap.VertexArray);

            GL.ClientActiveTexture(TextureUnit.Texture0);
            GL.EnableClientState(EnableCap.TextureCoordArray);

            shader.Use();
            shader.SetSamplerUniform("sampler0", 0);

            unsafe
            {
                fixed (float* pData = &vertexData[0].x)
                {
                    GL.VertexPointer(3, VertexPointerType.Float, PositionTexture.stride, (IntPtr)pData);
                    GL.TexCoordPointer(2, TexCoordPointerType.Float, PositionTexture.stride, (IntPtr)(pData + 3));

                    GL.DrawArrays(beginMode, 0, vertexData.Length);
                }
            }

            GL.DisableClientState(EnableCap.VertexArray);
            GL.DisableClientState(EnableCap.TextureCoordArray);

            //GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
            //GL.BindBuffer(BufferTarget.ElementArrayBuffer, 0);

            GL.Disable(EnableCap.Texture2D);
        }
	}