【发布时间】:2020-07-07 11:11:53
【问题描述】:
因此,在我的 DirectX 应用程序中,我正在收集各种缓冲区进行处理。在我的小代码 sn-p 中,我使用 Map() 和 memcpy() 将资源(在本例中为顶点缓冲区)复制到系统内存。这似乎没有问题。
我想访问缓冲区中的一些顶点(在 vert 中)。为此,有人告诉我需要将类型 void 转换为适当的顶点结构。我试图在下面的通用语句中表达...根据我的理解,我需要知道缓冲区顶点结构。我没有现成的。
为了简单起见,我想知道是否可以从返回的缓冲区中查询顶点结构。有问题的缓冲区是随机生成的,如果可能的话,我会更容易从这里获取结构。
有没有办法让我从缓冲区中查询这个结构?
pContext->IAGetVertexBuffers(0, 1, &veBuffer, &Stride, &veBufferOffset);
if (veBuffer)
veBuffer->GetDesc(&vedesc);
D3D11_MAPPED_SUBRESOURCE mapped_rsrc;
HRESULT = hrm pContext->Map(readVB, NULL, D3D11_MAP_READ, NULL, &mapped_rsrc);
assert(hrm == S_OK);
void* vert = new BYTE[mapped_rsrc.DepthPitch];
memcpy(vert, mapped_rsrc.pData, mapped_rsrc.DepthPitch);
pContext->unmap(readVB, 0);
//I'd like to access vertices here...
VertexType* vert = static_cast<VertexType*>(mapped_rsrc.pdata);
编辑:读完这个问题后:(DirectX 11) Dynamic Vertex/Index Buffers implementation with constant scene content changes
我在想也许使用 GetDesc() 应该返回描述缓冲区结构所需的内容?
【问题讨论】:
-
我怀疑这不是您的 DirectX 应用程序,因为您已经在 CPU 端获得了这些信息。
-
是的,缓冲区不是我的。我正在为我正在研究的计算机视觉模型收集数据。与此处所做的类似:arxiv.org/pdf/1608.02192.pdf。这纯粹是科学的。我确实有其他组件用于生成一些缓冲区,但它们是在 Autodesk Maya 而不是 DirectX 中生成的。否则申请是我的,这就是我的意思。
标签: c++ casting directx-11