public SDX_VertexBuffer(SDX_Display display, VertexLayout layout, int vertexCount) { mDisplay = display; mCount = vertexCount; mDeclaration = CreateVertexDeclaration(mDisplay.D3D_Device.Device, layout); Direct3D.VertexFormat mFormats = CreateVertexFormat(layout); mLayout = layout; mBuffer = new SlimDX.Direct3D9.VertexBuffer( mDisplay.D3D_Device.Device, vertexCount * layout.VertexSize, SlimDX.Direct3D9.Usage.WriteOnly, mFormats, Direct3D.Pool.Managed); }
private Direct3D.VertexFormat CreateVertexFormat(VertexLayout layout) { Direct3D.VertexFormat retval = SlimDX.Direct3D9.VertexFormat.None; foreach (var element in layout) { switch (element.ElementType) { case VertexElement.Position: retval |= SlimDX.Direct3D9.VertexFormat.Position; break; case VertexElement.Texture: retval |= SlimDX.Direct3D9.VertexFormat.Texture0; break; case VertexElement.Texture1: retval |= SlimDX.Direct3D9.VertexFormat.Texture1; break; case VertexElement.Texture2: retval |= SlimDX.Direct3D9.VertexFormat.Texture2; break; case VertexElement.Texture3: retval |= SlimDX.Direct3D9.VertexFormat.Texture3; break; case VertexElement.DiffuseColor: retval |= SlimDX.Direct3D9.VertexFormat.Diffuse; break; } } return(retval); }