I am first time working on DirectX, I find difficulty in upgrading the code from DirectX9 to DirectX11. Unable to get the code similar in DirectX 11 since lot of changes from DirectX9 to 11.
Like below is my code for Direct3D9 of SlimDx
using SlimDX;
using SlimDX.Direct3D9;
private readonly Device m_Device;
private readonly Direct3D m_Direct3D;
private readonly PresentParameters m_presentParams;
//renderer
public Renderer() {
m_Direct3D = new Direct3D();
var createFlags = CreateFlags.SoftwareVertexProcessing | CreateFlags.FpuPreserve;
var caps = m_Direct3D.GetDeviceCaps(0, DeviceType.Hardware);
if ((caps.DeviceCaps & DeviceCaps.HWTransformAndLight) != 0) // HW processing supported
{
createFlags = CreateFlags.HardwareVertexProcessing | CreateFlags.FpuPreserve;
}
m_presentParams = new PresentParameters();
m_presentParams.BackBufferFormat = Format.A8R8G8B8;
m_presentParams.BackBufferCount = 1;
m_presentParams.Multisample = MultisampleType.None;
m_presentParams.SwapEffect = SwapEffect.Flip;
m_presentParams.EnableAutoDepthStencil = true;
m_presentParams.AutoDepthStencilFormat = Format.D16;
m_presentParams.PresentFlags = PresentFlags.DiscardDepthStencil;
m_presentParams.PresentationInterval = PresentInterval.One;
m_presentParams.Windowed = true;
m_presentParams.DeviceWindowHandle = handle;
m_Device = new Device(m_Direct3D,
0,
DeviceType.Hardware,
handle,
createFlags,
m_presentParams);
m_Device.Present();
System.Drawing.Rectangle oldBounds = m_Device.ScissorRect;
}
//begins the scene
public void BeginScene() {
m_Device.BeginScene();
}
//create texture
public Texture CreateTextureFromStream(Stream srcStream) {
srcStream.Seek(0, SeekOrigin.Begin);
return Texture.FromStream(m_Device, srcStream, 0, Pool.Managed);
}
//ends the scene
public void EndScene() {
m_Device.EndScene();
}
/// <summary>
/// Gets the size of the max texture.
/// </summary>
/// <param name="width">The width.</param>
/// <param name="height">The height.</param>
public void GetMaxTextureSize(out int width, out int height) {
Capabilities c = m_Direct3D.GetDeviceCaps(0, DeviceType.Hardware);
width = c.MaxTextureHeight;
height = c.MaxTextureWidth;
}
//reset
public bool IsResetRequired() {
return m_Device.TestCooperativeLevel() == ResultCode.DeviceNotReset;
}
//render background
public void RenderBackground() {
m_Device.VertexFormat = VertexFormat.Position | VertexFormat.Diffuse;
m_Device.DrawUserPrimitives(PrimitiveType.TriangleList, m_backgroundRectBuffer.Count / 3, m_backgroundRectBuffer.ToArray());
m_backgroundRectBuffer.Clear();
}
//begin
public void RenderBegin() {
m_Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.FromArgb(0), 1.0f, 0);
}
Now, i want to move to DirectX 11. Can anyone help me out of this.