【问题标题】:Rewriting to a Directx 3D11 Buffer重写到 Directx 3D11 缓冲区
【发布时间】:2014-02-13 21:16:56
【问题描述】:

我只能向顶点缓冲区写入一次,而无需重新声明整个类。

原写

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();
}                 

我怎样才能重写这个缓冲区来改变顶点的位置。谢谢

【问题讨论】:

    标签: c# directx slimdx


    【解决方案1】:

    对于碰巧遇到与我相同问题的其他人,我相信我已经找到了解决方案。在 Move 函数中,我从未将位置设置回 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();
        }
    

    祝你好运!

    【讨论】:

      猜你喜欢
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多