2014-02-13 2 views
0

Я могу писать только один раз в буфер вершин без объявления всего класса.Переписывание в DirectX 3D11 Buffer

Оригинал записи

SlimDX.Direct3D11.Buffer vertexBuffer; 
vertexBuffer = new SlimDX.Direct3D11.Buffer(DeviceManager.Instance.device, 
      vertices, 
      SizeOfVertexBufferInBytes, 
      ResourceUsage.Default, 
      BindFlags.VertexBuffer, 
      CpuAccessFlags.None, 
      ResourceOptionFlags.None, 
      0); 

Кодекс, который используется для перезаписи буфера. В настоящее время он не движется, просто пытается переписать.

public void Move(Vector3 deltaVec) 
{ 
    this.vertexBuffer.Dispose(); 
    vertexBuffer = new SlimDX.Direct3D11.Buffer(DeviceManager.Instance.device, 
      vertices, 
      SizeOfVertexBufferInBytes, 
      ResourceUsage.Default, 
      BindFlags.VertexBuffer, 
      CpuAccessFlags.None, 
      ResourceOptionFlags.None, 
      0); 
    render(); 
}     

Как я мог бы переписать этот буфер, чтобы изменить положение вершин. Спасибо

ответ

0

Для кого-то другого, у меня такая же проблема, как и я, я считаю, что нашел решение. в функции «Перемещение» я никогда не устанавливаю позицию на 0. (Это приводит к ее индексированию?). любым способом здесь является фиксированный код.

public void Move(Vector3 deltaVec) 
    { 
     this.vertices.Close(); 
     vertices = new DataStream(SizeOfVertexBufferInBytes, true, true); 
     foreach (Vector3 vec in this.verticiesList) 
     { 
      vertices.Write(vec + deltaVec); 
     } 

     vertices.Position = 0; 

     // create the vertex layout and buffer 
     var elements = new[] { 
      new InputElement("POSITION", 0, Format.R32G32B32_Float, 0) 
     }; 
     layout = new InputLayout(DeviceManager.Instance.device, inputSignature, elements); 


     vertexBuffer = new SlimDX.Direct3D11.Buffer(DeviceManager.Instance.device, 
      vertices, 
      SizeOfVertexBufferInBytes, 
      ResourceUsage.Default, 
      BindFlags.VertexBuffer, 
      CpuAccessFlags.None, 
      ResourceOptionFlags.None, 
      0); 
     render(); 
    } 

Удачи!

Смежные вопросы