gpt4 book ai didi

c++ - VertexBuffer 如何知道其中的结构类型?

转载 作者:太空宇宙 更新时间:2023-11-04 02:53:20 26 4
gpt4 key购买 nike

// Lock the vertex buffer.
hr = aVertexBuffer->Map(D3D10_MAP_WRITE_DISCARD, 0, (void**)&verticesPtr);
// Copy the data into the vertex buffer.
memcpy(verticesPtr, (void*)vertices, (sizeof(LolAnyDataStructure)* aVertexCount));

在这种情况下,我使用的是结构 LolAnyDataStructure,当您调用 IASetVertexBuffers 时,DX 如何知道结构中纹理和位置的位置。

编辑:

vertexBufferDesc.Usage = D3D10_USAGE_DYNAMIC;
vertexBufferDesc.ByteWidth = sizeof(VertexType)* aVertexCount;
vertexBufferDesc.BindFlags = D3D10_BIND_VERTEX_BUFFER;
vertexBufferDesc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;
vertexBufferDesc.MiscFlags = 0;

最佳答案

顶点缓冲区以字节形式存储,您需要创建一个描述这些字节的输入布局。

你的代码中应该有这样的东西。

// Define the input layout
D3D10_INPUT_ELEMENT_DESC layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
};
UINT numElements = sizeof( layout ) / sizeof( layout[0] );

// Create the input layout
D3D10_PASS_DESC PassDesc;
g_pTechnique->GetPassByIndex( 0 )->GetDesc( &PassDesc );
hr = g_pd3dDevice->CreateInputLayout( layout, numElements, PassDesc.pIAInputSignature,
PassDesc.IAInputSignatureSize, &g_pVertexLayout );

在这个例子中,它是描述结构的layout

关于c++ - VertexBuffer 如何知道其中的结构类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19871908/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com