using ANX.Framework.NonXNA.Development; using ANX.Framework.NonXNA.RenderSystem; using OpenTK.Graphics.OpenGL; // This file is part of the ANX.Framework created by the // "ANX.Framework developer group" and released under the Ms-PL license. // For details see: http://anxframework.codeplex.com/license namespace ANX.RenderSystem.GL3 { [PercentageComplete(100)] [TestState(TestStateAttribute.TestState.Untested)] [Developer("AstrorEnales")] public class OcclusionQueryGL3 : IOcclusionQuery { private uint[] handle; #region Public public bool IsComplete { get { int state; GL.GetQueryObject(handle[0], GetQueryObjectParam.QueryResultAvailable, out state); return state != 0; } } public int PixelCount { get { int result; GL.GetQueryObject(handle[0], GetQueryObjectParam.QueryResult, out result); return result; } } #endregion #region Constructor public OcclusionQueryGL3() { handle = new uint[1]; GL.GenQueries(1, handle); } #endregion #region Begin public void Begin() { //GLCore.ColorMask(false, false, false, false); //GLCore.DepthMask(false); GL.BeginQuery(QueryTarget.SamplesPassed, handle[0]); } #endregion #region End public void End() { GL.EndQuery(QueryTarget.SamplesPassed); //GLCore.DepthMask(true); //GLCore.ColorMask(true, true, true, true); } #endregion #region Dispose public void Dispose() { GL.DeleteQueries(1, handle); } #endregion } }