I am trying to manipulate vertices during rendering time in order to move my rendred object.
VertexBuffer:
var VertexBuffer = SharpDX.Direct3D11.Buffer.Create(_device, BindFlags.VertexBuffer, Vertices);
Vertices:
Vertices = new[] //A BOX
{
new Vector4(-1.0f, -1.0f, -1.0f, 1.0f),
new Vector4(1.0f, 0.0f, 0.0f, 1.0f),
...
new Vector4( 1.0f, 1.0f, 1.0f, 1.0f),
new Vector4(0.0f, 1.0f, 1.0f, 1.0f),
};
Setting VertexBuffer:
d3dDevice.ImmediateContext.InputAssembler.SetVertexBuffers(0, new VertexBufferBinding(VertexBuffer, Utilities.SizeOf<Vector4>() * 2, 0));
My purpose is moving them on the screen left,right... so just like in games.
Before I did something like :
RenderLoop.Run(form, () =>
{
if ( __mesh.IsSelected )
{
for (int i = 0; i <= __mesh.VerticesCount - 1; i++)
{
if (IHandler.KeyRight) __mesh.Vertices[i].X += 0.050f;
if (IHandler.KeyLeft) __mesh.Vertices[i].X -= 0.050f;
if (IHandler.KeyUp) __mesh.Vertices[i].Y += 0.050f;
if (IHandler.KeyDown) __mesh.Vertices[i].Y -= 0.050f;
}
}
//INSIDE RENDERLOOP I CREATED NEW BUFFER EVERY TIME (?) MOST PROBABLY THIS IS WRONG.
VertexBuffer = SharpDX.Direct3D11.Buffer.Create(device, BindFlags.VertexBuffer, Vertices);
});
It worked but I am not sure if this is the correct way to do it. What should I do ?