public GLESHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, false, useShadowBuffer )
		{
			if ( type == IndexType.Size32 )
			{
				throw new AxiomException( "32 bit hardware buffers are not allowed in OpenGL ES." );
			}
			
			if ( !useShadowBuffer )
			{
				throw new AxiomException( "Only support with shadowBuffer" );
			}
			
			OpenGL.GenBuffers( 1, ref this._bufferId );
			GLESConfig.GlCheckError( this );
			if ( this._bufferId == 0 )
			{
				throw new AxiomException( "Cannot create GL index buffer" );
			}
			
			OpenGL.BindBuffer( All.ElementArrayBuffer, this._bufferId );
			GLESConfig.GlCheckError( this );
			OpenGL.BufferData( All.ElementArrayBuffer, new IntPtr( sizeInBytes ), IntPtr.Zero, GLESHardwareBufferManager.GetGLUsage( usage ) );
			GLESConfig.GlCheckError( this );
		}
        public GLESHardwareIndexBuffer(HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, bool useShadowBuffer)
            : base(manager, type, numIndices, usage, false, useShadowBuffer)
        {
            if (type == IndexType.Size32)
            {
                throw new AxiomException("32 bit hardware buffers are not allowed in OpenGL ES.");
            }

            if (!useShadowBuffer)
            {
                throw new AxiomException("Only support with shadowBuffer");
            }

            OpenGL.GenBuffers(1, ref this._bufferId);
            GLESConfig.GlCheckError(this);
            if (this._bufferId == 0)
            {
                throw new AxiomException("Cannot create GL index buffer");
            }

            OpenGL.BindBuffer(All.ElementArrayBuffer, this._bufferId);
            GLESConfig.GlCheckError(this);
            OpenGL.BufferData(All.ElementArrayBuffer, new IntPtr(sizeInBytes), IntPtr.Zero, GLESHardwareBufferManager.GetGLUsage(usage));
            GLESConfig.GlCheckError(this);
        }
Example #3
0
 public VertexData(HardwareBufferManagerBase mgr) : this(OgrePINVOKE.new_VertexData__SWIG_0(HardwareBufferManagerBase.getCPtr(mgr)), true)
 {
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
        public XnaHardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration,
                                        int numVertices, BufferUsage usage, GraphicsDevice dev, bool useSystemMemory,
                                        bool useShadowBuffer )
            : base( manager, vertexDeclaration, numVertices, usage, useSystemMemory, useShadowBuffer )
        {
            _device = dev;
            if ( !( vertexDeclaration is XnaVertexDeclaration ) )
            {
                throw new AxiomException(
                    "Invalid VertexDeclaration supplied, must be created by HardwareBufferManager.CreateVertexDeclaration()" );
            }
            if ( usage == BufferUsage.Dynamic || usage == BufferUsage.DynamicWriteOnly )
            {
                _buffer = new DynamicVertexBuffer( _device,
                                                   ( (XnaVertexDeclaration)vertexDeclaration ).XFGVertexDeclaration,
                                                   numVertices, XnaHelper.Convert( usage ) );
            }
            else
            {
                _buffer = new VertexBuffer( _device, ( (XnaVertexDeclaration)vertexDeclaration ).XFGVertexDeclaration,
                                            numVertices, XnaHelper.Convert( usage ) );
            }

            _bufferBytes = new byte[vertexDeclaration.GetVertexSize()*numVertices];
            _bufferBytes.Initialize();
        }
Example #5
0
	    /// <summary>
	    ///		Constructor.
	    /// </summary>
	    ///<param name="manager"></param>
	    ///<param name="type">Type of index (16 or 32 bit).</param>
	    /// <param name="numIndices">Number of indices to create in this buffer.</param>
	    /// <param name="usage">Buffer usage.</param>
	    /// <param name="useSystemMemory">Create in system memory?</param>
	    /// <param name="useShadowBuffer">Use a shadow buffer for reading/writing?</param>
	    public HardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, bool useSystemMemory, bool useShadowBuffer )
			: base( usage, useSystemMemory, useShadowBuffer )
		{
			this.type = type;
			this.numIndices = numIndices;
			this.Manager =  manager;
			// calc the index buffer size
			sizeInBytes = numIndices;

			if ( type == IndexType.Size32 )
			{
				indexSize = Marshal.SizeOf( typeof( int ) );
			}
			else
			{
				indexSize = Marshal.SizeOf( typeof( short ) );
			}

			sizeInBytes *= indexSize;

			// create a shadow buffer if required
			if ( useShadowBuffer )
			{
				shadowBuffer = new DefaultHardwareIndexBuffer( Manager, type, numIndices, BufferUsage.Dynamic );
			}
		}
        public XnaHardwareIndexBuffer(HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, GraphicsDevice device, bool useSystemMemory, bool useShadowBuffer)
            : base(manager, Validate(type), numIndices, usage, useSystemMemory, useShadowBuffer)
        {
            if (this.type == IndexType.Size16)
            {
                _bufferType = IndexElementSize.SixteenBits;
            }
#if !SILVERLIGHT
            else
            {
                _bufferType = IndexElementSize.ThirtyTwoBits;
            }
#endif

            // create the buffer
            if (usage == BufferUsage.Dynamic || usage == BufferUsage.DynamicWriteOnly)
            {
                _xnaBuffer = new IndexBuffer(device, _bufferType, numIndices, XnaHelper.Convert(usage));
            }
            else
            {
                _xnaBuffer = new IndexBuffer(device, _bufferType, numIndices,
                                             Microsoft.Xna.Framework.Graphics.BufferUsage.None);
            }

            _bufferBytes = new byte[sizeInBytes];
            _bufferBytes.Initialize();
        }
        public XnaHardwareVertexBuffer(HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration,
                                       int numVertices, BufferUsage usage, GraphicsDevice dev, bool useSystemMemory,
                                       bool useShadowBuffer)
            : base(manager, vertexDeclaration, numVertices, usage, useSystemMemory, useShadowBuffer)
        {
            _device = dev;
            if (!(vertexDeclaration is XnaVertexDeclaration))
            {
                throw new AxiomException(
                          "Invalid VertexDeclaration supplied, must be created by HardwareBufferManager.CreateVertexDeclaration()");
            }
            if (usage == BufferUsage.Dynamic || usage == BufferUsage.DynamicWriteOnly)
            {
                _buffer = new DynamicVertexBuffer(_device,
                                                  ((XnaVertexDeclaration)vertexDeclaration).XFGVertexDeclaration,
                                                  numVertices, XnaHelper.Convert(usage));
            }
            else
            {
                _buffer = new VertexBuffer(_device, ((XnaVertexDeclaration)vertexDeclaration).XFGVertexDeclaration,
                                           numVertices, XnaHelper.Convert(usage));
            }

            _bufferBytes = new byte[vertexDeclaration.GetVertexSize() * numVertices];
            _bufferBytes.Initialize();
        }
Example #8
0
 public void reorganiseBuffers(VertexDeclaration newDeclaration, HardwareBufferManagerBase mgr)
 {
     OgrePINVOKE.VertexData_reorganiseBuffers__SWIG_2(swigCPtr, VertexDeclaration.getCPtr(newDeclaration), HardwareBufferManagerBase.getCPtr(mgr));
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
Example #9
0
 public void setHardwareBufferManager(HardwareBufferManagerBase bufferManager)
 {
     OgrePINVOKE.Mesh_setHardwareBufferManager(swigCPtr, HardwareBufferManagerBase.getCPtr(bufferManager));
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
		protected internal HardwareBufferManager( HardwareBufferManagerBase baseInstance )
			: base()
		{
			if ( instance == null )
			{
				instance = this;
				this._baseInstance = baseInstance;
			}
		}
Example #11
0
        public HardwareBufferManagerBase getHardwareBufferManager()
        {
            global::System.IntPtr     cPtr = OgrePINVOKE.Mesh_getHardwareBufferManager(swigCPtr);
            HardwareBufferManagerBase ret  = (cPtr == global::System.IntPtr.Zero) ? null : new HardwareBufferManagerBase(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
Example #12
0
        public VertexData clone(bool copyData, HardwareBufferManagerBase mgr)
        {
            global::System.IntPtr cPtr = OgrePINVOKE.VertexData_clone__SWIG_0(swigCPtr, copyData, HardwareBufferManagerBase.getCPtr(mgr));
            VertexData            ret  = (cPtr == global::System.IntPtr.Zero) ? null : new VertexData(cPtr, false);

            if (OgrePINVOKE.SWIGPendingException.Pending)
            {
                throw OgrePINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
		unsafe public XnaHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, XFG.GraphicsDevice device, bool useSystemMemory, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, useSystemMemory, useShadowBuffer )
		{
			_bufferType = ( type == IndexType.Size16 ) ? XFG.IndexElementSize.SixteenBits : XFG.IndexElementSize.ThirtyTwoBits;

			// create the buffer
            if (usage == BufferUsage.Dynamic || usage == BufferUsage.DynamicWriteOnly)
            {
                _xnaBuffer = new XFG.IndexBuffer(device, _bufferType, numIndices, XnaHelper.Convert(usage));
            }
            else 
                _xnaBuffer = new XFG.IndexBuffer(device, _bufferType, numIndices, XFG.BufferUsage.None);

			_bufferBytes = new byte[ sizeInBytes ];
			_bufferBytes.Initialize();
		}
		public GLHardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices, BufferUsage usage, bool useShadowBuffer )
			: base( manager, vertexDeclaration, numVertices, usage, false, useShadowBuffer )
		{
			bufferID = 0;

			Gl.glGenBuffersARB( 1, out bufferID );

			if ( bufferID == 0 )
			{
				throw new Exception( "Cannot create GL vertex buffer" );
			}

			Gl.glBindBufferARB( Gl.GL_ARRAY_BUFFER_ARB, bufferID );

			// initialize this buffer.  we dont have data yet tho
			Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, new IntPtr( sizeInBytes ), IntPtr.Zero, GLHelper.ConvertEnum( usage ) ); // TAO 2.0
			//Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, sizeInBytes, IntPtr.Zero, GLHelper.ConvertEnum( usage ) );
		}
		public HardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices,
		                             BufferUsage usage, bool useSystemMemory, bool useShadowBuffer )
			: base( usage, useSystemMemory, useShadowBuffer )
		{
			this.vertexDeclaration = vertexDeclaration;
			this.numVertices = numVertices;
			this.Manager = manager;

			// calculate the size in bytes of this buffer
			sizeInBytes = vertexDeclaration.GetVertexSize()*numVertices;

			// create a shadow buffer if required
			if ( useShadowBuffer )
			{
				shadowBuffer = new DefaultHardwareVertexBuffer( this.Manager, vertexDeclaration, numVertices, BufferUsage.Dynamic );
			}

			this.useCount = 0;
		}
Example #16
0
        /// <summary>
        ///   Constructor.
        /// </summary>
        /// <param name="manager"> the HardwareBufferManager instance that created this buffer. </param>
        /// <param name="type"> Index type (16 or 32 bit). </param>
        /// <param name="numIndices"> Number of indices in the buffer. </param>
        /// <param name="usage"> Usage flags. </param>
        /// <param name="useShadowBuffer"> Should this buffer be backed by a software shadow buffer? </param>
        public GLHardwareIndexBuffer(HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage,
                                     bool useShadowBuffer)
            : base(manager, type, numIndices, usage, false, useShadowBuffer)
        {
            // generate the buffer
            Gl.glGenBuffersARB(1, out this._bufferId);

            if (this._bufferId == 0)
            {
                throw new Exception("OGL: Cannot create GL index buffer");
            }

            Gl.glBindBufferARB(Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, this._bufferId);

            // initialize this buffer.  we dont have data yet tho
            Gl.glBufferDataARB(Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, new IntPtr(sizeInBytes), IntPtr.Zero,
                               GLHelper.ConvertEnum(usage));
            LogManager.Instance.Write("OGL: Created IndexBuffer[{0}].", this._bufferId);
        }
		/// <summary>
		///   Constructor.
		/// </summary>
		/// <param name="manager"> the HardwareBufferManager instance that created this buffer. </param>
		/// <param name="type"> Index type (16 or 32 bit). </param>
		/// <param name="numIndices"> Number of indices in the buffer. </param>
		/// <param name="usage"> Usage flags. </param>
		/// <param name="useShadowBuffer"> Should this buffer be backed by a software shadow buffer? </param>
		public GLHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage,
		                              bool useShadowBuffer )
			: base( manager, type, numIndices, usage, false, useShadowBuffer )
		{
			// generate the buffer
			Gl.glGenBuffersARB( 1, out this._bufferId );

			if ( this._bufferId == 0 )
			{
				throw new Exception( "OGL: Cannot create GL index buffer" );
			}

			Gl.glBindBufferARB( Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, this._bufferId );

			// initialize this buffer.  we dont have data yet tho
			Gl.glBufferDataARB( Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, new IntPtr( sizeInBytes ), IntPtr.Zero,
			                    GLHelper.ConvertEnum( usage ) );
			LogManager.Instance.Write( "OGL: Created IndexBuffer[{0}].", this._bufferId );
		}
Example #18
0
        public GLHardwareVertexBuffer(HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices,
                                      BufferUsage usage, bool useShadowBuffer)
            : base(manager, vertexDeclaration, numVertices, usage, false, useShadowBuffer)
        {
            this.bufferID = 0;

            Gl.glGenBuffersARB(1, out this.bufferID);

            if (this.bufferID == 0)
            {
                throw new Exception("Cannot create GL vertex buffer");
            }

            Gl.glBindBufferARB(Gl.GL_ARRAY_BUFFER_ARB, this.bufferID);

            // initialize this buffer.  we dont have data yet tho
            Gl.glBufferDataARB(Gl.GL_ARRAY_BUFFER_ARB, new IntPtr(sizeInBytes), IntPtr.Zero, GLHelper.ConvertEnum(usage));
            // TAO 2.0
            //Gl.glBufferDataARB( Gl.GL_ARRAY_BUFFER_ARB, sizeInBytes, IntPtr.Zero, GLHelper.ConvertEnum( usage ) );
        }
        public D3D9HardwareVertexBuffer(HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration,
                                        int numVertices, BufferUsage usage, bool useSystemMemory, bool useShadowBuffer)
            : base(manager, vertexDeclaration, numVertices, usage, useSystemMemory, useShadowBuffer)
        {
            //Entering critical section
            this.LockDeviceAccess();

            this._mapDeviceToBufferResources = new Dictionary <D3D9.Device, BufferResources>();

#if AXIOM_D3D_MANAGE_BUFFERS
            var eResourcePool = useSystemMemory
                                                                        ? D3D9.Pool.SystemMemory
                                                                        : // If not system mem, use managed pool UNLESS buffer is discardable
                                                                          // if discardable, keeping the software backing is expensive
                                ((usage & BufferUsage.Discardable) != 0) ? D3D9.Pool.Default : D3D9.Pool.Managed;
#else
            var eResourcePool = useSystemMemory ? D3D9.Pool.SystemMemory : D3D9.Pool.Default;
#endif

            // Set the desired memory pool.
            this._bufferDesc.Pool = eResourcePool;

            // Allocate the system memory buffer.
            this._systemMemoryBuffer = BufferBase.Wrap(new byte[sizeInBytes]);

            // Case we have to create this buffer resource on loading.
            if (D3D9RenderSystem.ResourceManager.CreationPolicy == D3D9ResourceManager.ResourceCreationPolicy.CreateOnAllDevices)
            {
                foreach (var d3d9Device in D3D9RenderSystem.ResourceCreationDevices)
                {
                    CreateBuffer(d3d9Device, this._bufferDesc.Pool);
                }
            }

            D3D9RenderSystem.ResourceManager.NotifyResourceCreated(this);

            //Leaving critical section
            this.UnlockDeviceAccess();
        }
		public GLESHardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices, BufferUsage usage, bool useShadowBuffer )
			: base( manager, vertexDeclaration, numVertices, usage, false, useShadowBuffer )
		{
			if ( !useShadowBuffer )
			{
				throw new AxiomException( "Only supported with shadowBuffer" );
			}
			
			var buffers = new int[ 1 ];
			GL.GenBuffers( 1, buffers );
			GLESConfig.GlCheckError( this );
			this._bufferID = buffers[ 0 ];
			
			if ( this._bufferID == 0 )
			{
				throw new AxiomException( "Cannot create GL ES vertex buffer" );
			}
			
			( Root.Instance.RenderSystem as GLESRenderSystem ).BindGLBuffer( GLenum.ArrayBuffer, this._bufferID );
			GL.BufferData( GLenum.ArrayBuffer, new IntPtr( sizeInBytes ), IntPtr.Zero, GLESHardwareBufferManager.GetGLUsage( usage ) );
			GLESConfig.GlCheckError( this );
		}
		public D3DHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, D3D.Device device, bool useSystemMemory, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, useSystemMemory, useShadowBuffer )
		{
#if !NO_AXIOM_D3D_MANAGE_BUFFERS
			d3dPool = useSystemMemory ? D3D.Pool.SystemMemory :
				// If not system mem, use managed pool UNLESS buffer is discardable
				// if discardable, keeping the software backing is expensive
					  ( ( usage & BufferUsage.Discardable ) != 0 ) ? D3D.Pool.Default : D3D.Pool.Managed;
#else
			d3dPool = useSystemMemory ? Pool.SystemMemory : Pool.Default;
#endif

		    device = D3DRenderSystem.ActiveD3D9Device; // temp hack (update to 1.7)

			// create the buffer
			d3dBuffer = new D3D.IndexBuffer(
				device,
				sizeInBytes,
				D3DHelper.ConvertEnum( usage ),
				d3dPool,
				type == IndexType.Size16 );
		}
Example #22
0
		/// <summary>
		///     Constructor.
		/// </summary>
		/// <param name="type">Index type (16 or 32 bit).</param>
		/// <param name="numIndices">Number of indices in the buffer.</param>
		/// <param name="usage">Usage flags.</param>
		/// <param name="useShadowBuffer">Should this buffer be backed by a software shadow buffer?</param>
		public GLHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, false, useShadowBuffer )
		{
			// generate the buffer
			Gl.glGenBuffersARB( 1, out bufferID );

			if ( bufferID == 0 )
				throw new Exception( "Cannot create GL index buffer" );

			Gl.glBindBufferARB( Gl.GL_ELEMENT_ARRAY_BUFFER_ARB, bufferID );

			// initialize this buffer.  we dont have data yet tho
			Gl.glBufferDataARB(
				Gl.GL_ELEMENT_ARRAY_BUFFER_ARB,
				new IntPtr( sizeInBytes ),
				IntPtr.Zero,
				GLHelper.ConvertEnum( usage ) ); // TAO 2.0
			//Gl.glBufferDataARB(
			//    Gl.GL_ELEMENT_ARRAY_BUFFER_ARB,
			//    sizeInBytes,
			//    IntPtr.Zero,
			//    GLHelper.ConvertEnum( usage ) );
		}
Example #23
0
        public GLES2HardwareVertexBuffer(HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices, BufferUsage usage, bool useShadowBuffer)
            : base(manager, vertexDeclaration, numVertices, usage, false, useShadowBuffer)
        {
            if (!useShadowBuffer)
            {
                throw new AxiomException("Only supported with shadowBuffer");
            }

            var buffers = new int[1];

            GL.GenBuffers(1, buffers);
            GLES2Config.GlCheckError(this);
            this._bufferID = buffers[0];

            if (this._bufferID == 0)
            {
                throw new AxiomException("Cannot create GL ES vertex buffer");
            }

            (Root.Instance.RenderSystem as GLES2RenderSystem).BindGLBuffer(GLenum.ArrayBuffer, this._bufferID);
            GL.BufferData(GLenum.ArrayBuffer, new IntPtr(sizeInBytes), IntPtr.Zero, GLES2HardwareBufferManager.GetGLUsage(usage));
            GLES2Config.GlCheckError(this);
        }
        public XnaHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, GraphicsDevice device, bool useSystemMemory, bool useShadowBuffer )
            : base(manager, Validate(type), numIndices, usage, useSystemMemory, useShadowBuffer)
        {
            if (this.type == IndexType.Size16)
                _bufferType = IndexElementSize.SixteenBits;
#if !SILVERLIGHT
            else
                _bufferType = IndexElementSize.ThirtyTwoBits;
#endif

            // create the buffer
            if ( usage == BufferUsage.Dynamic || usage == BufferUsage.DynamicWriteOnly )
            {
                _xnaBuffer = new IndexBuffer( device, _bufferType, numIndices, XnaHelper.Convert( usage ) );
            }
            else
            {
                _xnaBuffer = new IndexBuffer( device, _bufferType, numIndices,
                                              Microsoft.Xna.Framework.Graphics.BufferUsage.None );
            }

            _bufferBytes = new byte[sizeInBytes];
            _bufferBytes.Initialize();
        }
		public DefaultHardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration,
											int numVertices, BufferUsage usage )
			: base( manager, vertexDeclaration, numVertices, usage, true, false ) // always software, never shadowed
		{
			_mpData = new byte[ base.sizeInBytes ];
		}
 public GLDefaultHardwareVertexBuffer( HardwareBufferManagerBase manager, VertexDeclaration vertexDeclaration, int numVertices, BufferUsage usage, bool useSystemMemory, bool useShadowBuffer ) : base( manager, vertexDeclaration, numVertices, usage, useSystemMemory, useShadowBuffer )
 {
 }
 public GLDefaultHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, bool useSystemMemory, bool useShadowBuffer ) : base( manager, type, numIndices, usage, useSystemMemory, useShadowBuffer )
 {
 }
Example #28
0
 public void reorganiseBuffers(VertexDeclaration newDeclaration, SWIGTYPE_p_std__vectorT_Ogre__HardwareBuffer__Usage_t bufferUsage, HardwareBufferManagerBase mgr)
 {
     OgrePINVOKE.VertexData_reorganiseBuffers__SWIG_0(swigCPtr, VertexDeclaration.getCPtr(newDeclaration), SWIGTYPE_p_std__vectorT_Ogre__HardwareBuffer__Usage_t.getCPtr(bufferUsage), HardwareBufferManagerBase.getCPtr(mgr));
     if (OgrePINVOKE.SWIGPendingException.Pending)
     {
         throw OgrePINVOKE.SWIGPendingException.Retrieve();
     }
 }
Example #29
0
		public VertexData( VertexDeclaration dcl, VertexBufferBinding bind )
			: base()
		{
			// this is a fallback rather than actively used
			this._mgr = HardwareBufferManager.Instance;
			this.vertexDeclaration = dcl;
			this.vertexBufferBinding = bind;
			DeleteDclBinding = false;
		}
Example #30
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(HardwareBufferManagerBase obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }
		public DefaultHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType idxType, int numIndexes,
										   BufferUsage usage )
			: base( manager, idxType, numIndexes, usage, true, false )
		{
			_mpData = new byte[ sizeInBytes ];
		}
Example #32
0
		public VertexData( HardwareBufferManagerBase mgr )
			: base()
		{
			this._mgr = mgr != null ? mgr : HardwareBufferManager.Instance;
			this.vertexBufferBinding = HardwareBufferManager.Instance.CreateVertexBufferBinding();
			this.vertexDeclaration = HardwareBufferManager.Instance.CreateVertexDeclaration();
			DeleteDclBinding = true;
		}
		public D3D9HardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage,
		                                bool useSystemMemory, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, useSystemMemory, useShadowBuffer )
		{
			//Entering critical section
			this.LockDeviceAccess();

			this._mapDeviceToBufferResources = new Dictionary<D3D9.Device, BufferResources>();

#if AXIOM_D3D_MANAGE_BUFFERS
			var eResourcePool = useSystemMemory ? D3D9.Pool.SystemMemory : // If not system mem, use managed pool UNLESS buffer is discardable
			                    // if discardable, keeping the software backing is expensive
			                    ( ( usage & BufferUsage.Discardable ) != 0 ) ? D3D9.Pool.Default : D3D9.Pool.Managed;
#else
			var eResourcePool = useSystemMemory ? D3D9.Pool.SystemMemory : D3D9.Pool.Default;
#endif
			// Set the desired memory pool.
			this._bufferDesc.Pool = eResourcePool;

			// Allocate the system memory buffer.
			this._systemMemoryBuffer = BufferBase.Wrap( new byte[sizeInBytes] );

			// Case we have to create this buffer resource on loading.
			if ( D3D9RenderSystem.ResourceManager.CreationPolicy == D3D9ResourceManager.ResourceCreationPolicy.CreateOnAllDevices )
			{
				foreach ( var d3d9Device in D3D9RenderSystem.ResourceCreationDevices )
				{
					CreateBuffer( d3d9Device, this._bufferDesc.Pool );
				}
			}

			D3D9RenderSystem.ResourceManager.NotifyResourceCreated( this );

			//Leaving critical section
			this.UnlockDeviceAccess();
		}