Вы все еще можете использовать http://sharpdxwpf.codeplex.com/.
Для правильной работы с SharpDX 2.5.0 вам необходимо сделать несколько модификаций.
1) В проекте Sharp.WPF в классе DXUtils.cs в методе
Direct3D11.Buffer CreateBuffer<T>(this Direct3D11.Device device, T[] range)
добавить эту строку
stream.Position = 0;
только после того, как
stream.WriteRange(range);
Так фиксированный метод выглядит следующим образом :
public static Direct3D11.Buffer CreateBuffer<T>(this Direct3D11.Device device, T[] range)
where T : struct
{
int sizeInBytes = Marshal.SizeOf(typeof(T));
using (var stream = new DataStream(range.Length * sizeInBytes, true, true))
{
stream.WriteRange(range);
stream.Position = 0; // fix
return new Direct3D11.Buffer(device, stream, new Direct3D11.BufferDescription
{
BindFlags = Direct3D11.BindFlags.VertexBuffer,
SizeInBytes = (int)stream.Length,
CpuAccessFlags = Direct3D11.CpuAccessFlags.None,
OptionFlags = Direct3D11.ResourceOptionFlags.None,
StructureByteStride = 0,
Usage = Direct3D11.ResourceUsage.Default,
});
}
}
2) А в классе D3D11 в D3D11.cs файле переименовать этот
m_device.ImmediateContext.Rasterizer.SetViewports(new Viewport(0, 0, w, h, 0.0f, 1.0f));
в этом
m_device.ImmediateContext.Rasterizer.SetViewport(new Viewport(0, 0, w, h, 0.0f, 1.0f));
т.е. SetViewports Into SetViewport.
И он должен работать сейчас.
Почему вы не можете удалить образец DX10? Детали помогут другим помочь вам. Кроме того, вот аналогичный вопрос: http://stackoverflow.com/q/9095089/1339280 – shoelzer