/// <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; }
/// <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; }