public override void RenderScene(float FOV, float near, float far, Vector3f eyeVector, float xPos, float yPos)
        {
            base.RenderScene(FOV, near, far, eyeVector, xPos, yPos);

            Gl.glTexEnvf(Gl.GL_POINT_SPRITE_ARB, Gl.GL_COORD_REPLACE_ARB, Gl.GL_TRUE);
            Gl.glEnable(Gl.GL_POINT_SPRITE_ARB);
            //control point size from vertex program?
            Gl.glEnable(Gl.GL_VERTEX_PROGRAM_POINT_SIZE_ARB);
            Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture[selectedTexture]);

            //enable additive blending
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA); //set the blend function

            Gl.glDepthFunc(Gl.GL_LEQUAL);                               //less or equal for depth


            #region PASS 1
            //enable writing into depth buffer to
            Gl.glDepthMask(Gl.GL_TRUE);

            EnableShadersPass1(eyeVector);

            Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glEnableClientState(Gl.GL_NORMAL_ARRAY);
            Gl.glEnableClientState(Gl.GL_COLOR_ARRAY);
            dataSource.RenderingPass(FOV, near, far, eyeVector, new Point2f(xPos, yPos));
            Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glDisableClientState(Gl.GL_NORMAL_ARRAY);
            Gl.glDisableClientState(Gl.GL_COLOR_ARRAY);
            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, 0);

            #endregion

            #region PASS 2

            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);

            Gl.glDepthMask(Gl.GL_FALSE);

            EnableShadersPass2(eyeVector);

            Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glEnableClientState(Gl.GL_NORMAL_ARRAY);
            Gl.glEnableClientState(Gl.GL_COLOR_ARRAY);
            VBOUtils.RenderVBOsFastSecondPass();
            VBOUtils.ClearSecondPassQueue();
            Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
            Gl.glDisableClientState(Gl.GL_NORMAL_ARRAY);
            Gl.glDisableClientState(Gl.GL_COLOR_ARRAY);
            Gl.glBindBuffer(Gl.GL_ARRAY_BUFFER, 0);


            #endregion

            DisableShaders();

            Gl.glDepthMask(Gl.GL_TRUE);
            Gl.glDisable(Gl.GL_POINT_SPRITE_ARB);
        }
 public void Render()
 {
     VBOUtils.DrawVBO(_mode, ref _handle);
 }