Exemplo n.º 1
0
        /// <summary>
        /// Builds the vertex buffer using vertices with position and normal data.
        /// </summary>
        public void BuildVertices_PositionNormal()
        {
            GraphicsStream stream;

            DataCore.VertexFormats.PositionNormal[] tri =
                new DataCore.VertexFormats.PositionNormal[_page.TerrainPatch.NumVertices];

            for (int i = 0; i < tri.Length; i++)
            {
                tri[i].Position = _page.TerrainPatch.Vertices[i].Position;
                tri[i].Normal   = _page.TerrainPatch.Vertices[i].Normal;
            }


            if (_vb != null)
            {
                if (!_vb.Disposed)
                {
                    _vb.Dispose();
                }

                _vb = null;
            }

            _vb = new D3D.VertexBuffer(typeof(DataCore.VertexFormats.PositionNormal),
                                       tri.Length, _viewport.Device, D3D.Usage.WriteOnly,
                                       DataCore.VertexFormats.PositionNormal.Format, D3D.Pool.Managed);

            stream = _vb.Lock(0, 0, D3D.LockFlags.None);
            stream.Write(tri);
            _vb.Unlock();

            _vbSize = tri.Length;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Builds the vertex buffer using vertices with position and normal data.
        /// </summary>
        public void BuildVertices_PositionNormal()
        {
            GraphicsStream stream;
            DataCore.VertexFormats.PositionNormal[] tri =
                new DataCore.VertexFormats.PositionNormal[_page.TerrainPatch.NumVertices];

            for ( int i = 0; i < tri.Length; i++ )
            {
                tri[i].Position = _page.TerrainPatch.Vertices[i].Position;
                tri[i].Normal = _page.TerrainPatch.Vertices[i].Normal;
            }

            if ( _vb != null )
            {
                if ( !_vb.Disposed )
                    _vb.Dispose();

                _vb = null;
            }

            _vb = new D3D.VertexBuffer( typeof( DataCore.VertexFormats.PositionNormal ),
                tri.Length, _viewport.Device, D3D.Usage.WriteOnly,
                DataCore.VertexFormats.PositionNormal.Format, D3D.Pool.Managed );

            stream = _vb.Lock( 0, 0, D3D.LockFlags.None );
            stream.Write( tri );
            _vb.Unlock();

            _vbSize = tri.Length;
        }