Axiom.RenderSystems.OpenGL.GLHardwarePixelBuffer.BlitToMemory C# (CSharp) Méthode

BlitToMemory() public méthode

public BlitToMemory ( BasicBox srcBox, PixelBox dst ) : void
srcBox Axiom.Media.BasicBox
dst Axiom.Media.PixelBox
Résultat void
		public override void BlitToMemory( BasicBox srcBox, PixelBox dst )
		{
			if ( !_buffer.Contains( srcBox ) )
				throw new ArgumentException( "Source box out of range." );
			if ( srcBox.Left == 0 && srcBox.Right == Width &&
				 srcBox.Top == 0 && srcBox.Bottom == Height &&
				 srcBox.Front == 0 && srcBox.Back == Depth &&
				 dst.Width == Width &&
				 dst.Height == Height &&
				 dst.Depth == Depth &&
				 GLPixelUtil.GetGLOriginFormat( dst.Format ) != 0 )
			{
				// The direct case: the user wants the entire texture in a format supported by GL
				// so we don't need an intermediate buffer
				download( dst );
			}
			else
			{
				// Use buffer for intermediate copy
				allocateBuffer();
				// Download entire buffer
				download( _buffer );
				if ( srcBox.Width != dst.Width ||
					srcBox.Height != dst.Height ||
					srcBox.Depth != dst.Depth )
				{
					//TODO Implement Image.Scale
					throw new Exception( "Image scaling not yet implemented" );
					// We need scaling
					//Image.Scale( _buffer.GetSubVolume( srcBox ), dst, ImageFilter.BiLinear );
				}
				else
				{
					// Just copy the bit that we need
					PixelConverter.BulkPixelConversion( _buffer.GetSubVolume( srcBox ), dst );
				}
				freeBuffer();
			}
		}