private bool LessThan(RBFormat other) { if (this.Format < other.Format) { return(true); } else if (this.Format == other.Format) { if (this.Width < other.Width) { return(true); } else if (this.Width == other.Width) { if (this.Height < other.Height) { return(true); } else if (this.Height == other.Height) { if (this.Samples < other.Samples) { return(true); } } } } return(false); }
public GLES2SurfaceDesc RequestRenderBuffer(GLenum format, int width, int height, int fsaa) { var retVal = new GLES2SurfaceDesc(); retVal.buffer = null; if (format != GLenum.None) { var key = new RBFormat(format, width, height, fsaa); if (this.renderBufferMap.ContainsKey(key)) { retVal.buffer = this.renderBufferMap[key].buffer; retVal.zoffset = 0; retVal.numSamples = fsaa; } else { //New one var rb = new GLES2RenderBuffer(format, width, height, fsaa); this.renderBufferMap.Add(key, new RBRef(rb)); retVal.buffer = rb; retVal.zoffset = 0; retVal.numSamples = fsaa; } } return(retVal); }
/// <summary> /// Request a render buffer. If format is GL_NONE, return a zero buffer. /// </summary> /// <param name="format"> </param> /// <param name="width"> </param> /// <param name="height"> </param> /// <param name="fsaa"> </param> /// <returns> </returns> public GLESSurfaceDescription RequestRenderbuffer(All format, int width, int height, int fsaa) { var retval = new GLESSurfaceDescription(); if (format != All.Zero) { var key = new RBFormat(format, width, height, fsaa); RBRef iter; if (this._renderBuffer.TryGetValue(key, out iter)) { retval.Buffer = iter.Buffer; retval.ZOffset = 0; retval.NumSamples = fsaa; iter.RefCount++; } else { // New one var rb = new GLESRenderBuffer(format, width, height, fsaa); this._renderBuffer.Add(key, new RBRef(rb)); retval.Buffer = rb; retval.ZOffset = 0; retval.NumSamples = fsaa; } } return(retval); }
/// <summary> /// </summary> /// <param name="surface"> </param> public void ReleaseRenderbuffer(GLESSurfaceDescription surface) { if (surface.Buffer == null) { return; } var key = new RBFormat(surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height, surface.NumSamples); RBRef refval; if (this._renderBuffer.TryGetValue(key, out refval)) { // Decrease refcount refval.RefCount--; if (refval.RefCount == 0) { // If refcount reaches zero, delete buffer and remove from map refval.Buffer.Dispose(); this._renderBuffer.Remove(key); } else { this._renderBuffer[key] = refval; } } }
/// <summary> /// Request a render buffer. If format is Gl.GL_NONE, return a zero buffer. /// </summary> /// <param name="format"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public GLSurfaceDesc RequestRenderBuffer(int format, int width, int height) { var retval = new GLSurfaceDesc(); retval.Buffer = null; // Return 0 buffer if GL_NONE is requested if (format != Gl.GL_NONE) { var key = new RBFormat(format, width, height); RBRef value; if (this._renderBufferMap.TryGetValue(key, out value)) { retval.Buffer = value.Buffer; retval.ZOffset = 0; // Increase refcount value.Refcount++; } else { // New one var rb = new GLRenderBuffer(format, width, height, 0); this._renderBufferMap[key] = new RBRef(rb); retval.Buffer = rb; retval.ZOffset = 0; } } LogManager.Instance.Write("Requested renderbuffer with format " + format.ToString() + " of " + width.ToString() + "x" + height.ToString() + "."); return(retval); }
public void RequestRenderBuffer(ref GLES2SurfaceDesc surface) { if (surface.buffer == null) { return; } var key = new RBFormat(surface.buffer.GLFormat, surface.buffer.Width, surface.buffer.Height, surface.numSamples); if (this.renderBufferMap.ContainsKey(key)) { } }
public void ReleaseRenderBuffer(GLES2SurfaceDesc surface) { if (surface.buffer == null) { return; } var key = new RBFormat(surface.buffer.GLFormat, surface.buffer.Width, surface.buffer.Height, surface.numSamples); if (this.renderBufferMap.ContainsKey(key)) { this.renderBufferMap[key].buffer.Dispose(); this.renderBufferMap.Remove(key); } }
/// <summary> /// Request the specify render buffer in case shared somewhere. Ignore silently if surface.buffer is null. /// </summary> /// <param name="surface"> </param> public void RequestRenderbuffer(GLESSurfaceDescription surface) { if (surface.Buffer == null) { return; } var key = new RBFormat(surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height, surface.NumSamples); Utilities.Contract.Requires(this._renderBuffer.ContainsKey(key)); Utilities.Contract.Requires(this._renderBuffer[key].Buffer == surface.Buffer); RBRef refval = this._renderBuffer[key]; refval.RefCount++; this._renderBuffer[key] = refval; }
/// <summary> /// Request the specific render buffer in case shared somewhere. Ignore /// silently if surface.buffer is 0. /// </summary> /// <param name="surface"></param> public void RequestRenderBuffer(GLSurfaceDesc surface) { if (surface.Buffer == null) { return; } var key = new RBFormat(surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height); RBRef value; bool result = this._renderBufferMap.TryGetValue(key, out value); Debug.Assert(result); lock (this) { Debug.Assert(value.Buffer == surface.Buffer); // Increase refcount value.Refcount++; } LogManager.Instance.Write("Requested renderbuffer with format " + surface.Buffer.GLFormat.ToString() + " of " + surface.Buffer.Width.ToString() + "x" + surface.Buffer.Height.ToString() + " with refcount " + value.Refcount.ToString() + "."); }
/// <summary> /// Release a render buffer. Ignore silently if surface.buffer is null. /// </summary> /// <param name="surface"></param> public void ReleaseRenderBuffer(GLSurfaceDesc surface) { if (surface.Buffer == null) { return; } var key = new RBFormat(surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height); RBRef value; if (this._renderBufferMap.TryGetValue(key, out value)) { // Decrease refcount value.Refcount--; if (value.Refcount == 0) { // If refcount reaches zero, delete buffer and remove from map value.Buffer.Dispose(); this._renderBufferMap.Remove(key); LogManager.Instance.Write("Destroyed renderbuffer of format {0} of {1}x{2}", key.Format, key.Width, key.Height); } } }
private bool LessThan( RBFormat other ) { if ( this.Format < other.Format ) { return true; } else if ( this.Format == other.Format ) { if ( this.Width < other.Width ) { return true; } else if ( this.Width == other.Width ) { if ( this.Height < other.Height ) { return true; } else if ( this.Height == other.Height ) { if ( this.Samples < other.Samples ) { return true; } } } } return false; }
public void ReleaseRenderBuffer( GLES2SurfaceDesc surface ) { if ( surface.buffer == null ) { return; } var key = new RBFormat( surface.buffer.GLFormat, surface.buffer.Width, surface.buffer.Height, surface.numSamples ); if ( this.renderBufferMap.ContainsKey( key ) ) { this.renderBufferMap[ key ].buffer.Dispose(); this.renderBufferMap.Remove( key ); } }
public void RequestRenderBuffer( ref GLES2SurfaceDesc surface ) { if ( surface.buffer == null ) { return; } var key = new RBFormat( surface.buffer.GLFormat, surface.buffer.Width, surface.buffer.Height, surface.numSamples ); if ( this.renderBufferMap.ContainsKey( key ) ) {} }
/// <summary> /// Request the specific render buffer in case shared somewhere. Ignore /// silently if surface.buffer is 0. /// </summary> /// <param name="surface"></param> public void RequestRenderBuffer( GLSurfaceDesc surface ) { if ( surface.Buffer == null ) { return; } var key = new RBFormat( surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height ); RBRef value; bool result = this._renderBufferMap.TryGetValue( key, out value ); Debug.Assert( result ); lock ( this ) { Debug.Assert( value.Buffer == surface.Buffer ); // Increase refcount value.Refcount++; } LogManager.Instance.Write( "Requested renderbuffer with format " + surface.Buffer.GLFormat.ToString() + " of " + surface.Buffer.Width.ToString() + "x" + surface.Buffer.Height.ToString() + " with refcount " + value.Refcount.ToString() + "." ); }
/// <summary> /// Release a render buffer. Ignore silently if surface.buffer is null. /// </summary> /// <param name="surface"></param> public void ReleaseRenderBuffer( GLSurfaceDesc surface ) { if ( surface.Buffer == null ) { return; } var key = new RBFormat( surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height ); RBRef value; if ( this._renderBufferMap.TryGetValue( key, out value ) ) { // Decrease refcount value.Refcount--; if ( value.Refcount == 0 ) { // If refcount reaches zero, delete buffer and remove from map value.Buffer.Dispose(); this._renderBufferMap.Remove( key ); LogManager.Instance.Write( "Destroyed renderbuffer of format {0} of {1}x{2}", key.Format, key.Width, key.Height ); } } }
/// <summary> /// Request a render buffer. If format is Gl.GL_NONE, return a zero buffer. /// </summary> /// <param name="format"></param> /// <param name="width"></param> /// <param name="height"></param> /// <returns></returns> public GLSurfaceDesc RequestRenderBuffer( int format, int width, int height ) { var retval = new GLSurfaceDesc(); retval.Buffer = null; // Return 0 buffer if GL_NONE is requested if ( format != Gl.GL_NONE ) { var key = new RBFormat( format, width, height ); RBRef value; if ( this._renderBufferMap.TryGetValue( key, out value ) ) { retval.Buffer = value.Buffer; retval.ZOffset = 0; // Increase refcount value.Refcount++; } else { // New one var rb = new GLRenderBuffer( format, width, height, 0 ); this._renderBufferMap[ key ] = new RBRef( rb ); retval.Buffer = rb; retval.ZOffset = 0; } } LogManager.Instance.Write( "Requested renderbuffer with format " + format.ToString() + " of " + width.ToString() + "x" + height.ToString() + "." ); return retval; }
/// <summary> /// </summary> /// <param name="surface"> </param> public void ReleaseRenderbuffer( GLESSurfaceDescription surface ) { if ( surface.Buffer == null ) { return; } var key = new RBFormat( surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height, surface.NumSamples ); RBRef refval; if ( this._renderBuffer.TryGetValue( key, out refval ) ) { // Decrease refcount refval.RefCount--; if ( refval.RefCount == 0 ) { // If refcount reaches zero, delete buffer and remove from map refval.Buffer.Dispose(); this._renderBuffer.Remove( key ); } else { this._renderBuffer[ key ] = refval; } } }
/// <summary> /// Request the specify render buffer in case shared somewhere. Ignore silently if surface.buffer is null. /// </summary> /// <param name="surface"> </param> public void RequestRenderbuffer( GLESSurfaceDescription surface ) { if ( surface.Buffer == null ) { return; } var key = new RBFormat( surface.Buffer.GLFormat, surface.Buffer.Width, surface.Buffer.Height, surface.NumSamples ); Utilities.Contract.Requires( this._renderBuffer.ContainsKey( key ) ); Utilities.Contract.Requires( this._renderBuffer[ key ].Buffer == surface.Buffer ); RBRef refval = this._renderBuffer[ key ]; refval.RefCount++; this._renderBuffer[ key ] = refval; }
/// <summary> /// Request a render buffer. If format is GL_NONE, return a zero buffer. /// </summary> /// <param name="format"> </param> /// <param name="width"> </param> /// <param name="height"> </param> /// <param name="fsaa"> </param> /// <returns> </returns> public GLESSurfaceDescription RequestRenderbuffer( All format, int width, int height, int fsaa ) { var retval = new GLESSurfaceDescription(); if ( format != All.Zero ) { var key = new RBFormat( format, width, height, fsaa ); RBRef iter; if ( this._renderBuffer.TryGetValue( key, out iter ) ) { retval.Buffer = iter.Buffer; retval.ZOffset = 0; retval.NumSamples = fsaa; iter.RefCount++; } else { // New one var rb = new GLESRenderBuffer( format, width, height, fsaa ); this._renderBuffer.Add( key, new RBRef( rb ) ); retval.Buffer = rb; retval.ZOffset = 0; retval.NumSamples = fsaa; } } return retval; }
public GLES2SurfaceDesc RequestRenderBuffer( GLenum format, int width, int height, int fsaa ) { var retVal = new GLES2SurfaceDesc(); retVal.buffer = null; if ( format != GLenum.None ) { var key = new RBFormat( format, width, height, fsaa ); if ( this.renderBufferMap.ContainsKey( key ) ) { retVal.buffer = this.renderBufferMap[ key ].buffer; retVal.zoffset = 0; retVal.numSamples = fsaa; } else { //New one var rb = new GLES2RenderBuffer( format, width, height, fsaa ); this.renderBufferMap.Add( key, new RBRef( rb ) ); retVal.buffer = rb; retVal.zoffset = 0; retVal.numSamples = fsaa; } } return retVal; }