参数没有正确传递
Parameter not passing in correctly
我有如下函数:
void Direct3DRenderer::CreatePrimitive(char *name, Direct3DHelper::VERTEX vertices[])
{
LPDIRECT3DVERTEXBUFFER9 vertex_buf;
d3d_dev->CreateVertexBuffer(4 * sizeof(Direct3DHelper::VERTEX), 0, Direct3DHelper::FVF, D3DPOOL_MANAGED, &vertex_buf, NULL);
VOID *pVoid;
vertex_buf->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, vertices, sizeof(vertices));
vertex_buf->Unlock();
primitiveMap[name] = vertex_buf;
}
出于某种原因,sizeof(vertices) 没有给我正确的值,或其他什么。这是我输入的内容:
Direct3DHelper::VERTEX verticesA[] =
{
{ 0, 0, 0, 1, D3DCOLOR_XRGB(255, 0, 0) },
{ 10, 0, 0, 1, D3DCOLOR_XRGB(0, 255, 0) },
{ 0, 10, 0, 1, D3DCOLOR_XRGB(255, 255, 0) },
{ 10, 10, 0, 1, D3DCOLOR_XRGB(0, 0, 255) }
};
如果我不将它传递给函数,只是将所有 "vertices" 替换为 "verticesA," 就可以了...请帮忙。
使用 []
语法并不意味着您传递的是数组。它仍然是一个指针,这使得它使用起来更加混乱。
所以你的函数中的 sizeof vertices
将是 sizeof Direct3DHelper::VERTEX*
.
您需要将数组的大小从创建它的地方传递到函数中。只有在创建它的范围内,大小才会占整个数组的大小。
我实际上建议使用 std::array
或 std::vector
之类的东西。
我有如下函数:
void Direct3DRenderer::CreatePrimitive(char *name, Direct3DHelper::VERTEX vertices[])
{
LPDIRECT3DVERTEXBUFFER9 vertex_buf;
d3d_dev->CreateVertexBuffer(4 * sizeof(Direct3DHelper::VERTEX), 0, Direct3DHelper::FVF, D3DPOOL_MANAGED, &vertex_buf, NULL);
VOID *pVoid;
vertex_buf->Lock(0, 0, (void**)&pVoid, 0);
memcpy(pVoid, vertices, sizeof(vertices));
vertex_buf->Unlock();
primitiveMap[name] = vertex_buf;
}
出于某种原因,sizeof(vertices) 没有给我正确的值,或其他什么。这是我输入的内容:
Direct3DHelper::VERTEX verticesA[] =
{
{ 0, 0, 0, 1, D3DCOLOR_XRGB(255, 0, 0) },
{ 10, 0, 0, 1, D3DCOLOR_XRGB(0, 255, 0) },
{ 0, 10, 0, 1, D3DCOLOR_XRGB(255, 255, 0) },
{ 10, 10, 0, 1, D3DCOLOR_XRGB(0, 0, 255) }
};
如果我不将它传递给函数,只是将所有 "vertices" 替换为 "verticesA," 就可以了...请帮忙。
使用 []
语法并不意味着您传递的是数组。它仍然是一个指针,这使得它使用起来更加混乱。
所以你的函数中的 sizeof vertices
将是 sizeof Direct3DHelper::VERTEX*
.
您需要将数组的大小从创建它的地方传递到函数中。只有在创建它的范围内,大小才会占整个数组的大小。
我实际上建议使用 std::array
或 std::vector
之类的东西。