我正在尝试使用指针从函数中获取多个输出。我传入一个指针(为了初始化目的指向NULL),函数填写所述指针并返回其失败/成功值。
在指针传入函数内部,一切都很好。它被初始化了。然而,一旦我们走出去,旧的值就会被抛弃,并且它会以某种方式再次为NULL。
我觉得我应该在这里使用正确数量的星号和&符号,但我不太明白。
强制性代码:
ID3D11Buffer* Vout;
g_pDxManager->CreateVertexbuffer(&Vout, vertexes); //This isn't getting changed
在CreateVertexBuffer()
中HRESULT DxManager::CreateVertexbuffer(ID3D11Buffer** out, Vertex3p vertexes [])
{
D3D11_BUFFER_DESC bufferDesc;
bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bufferDesc.ByteWidth = (sizeof (Vertex3p1c) * 3);
bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
bufferDesc.MiscFlags = 0;
bufferDesc.Usage = D3D11_USAGE_DYNAMIC;
D3D11_SUBRESOURCE_DATA initData;
initData.pSysMem = vertexes;
initData.SysMemPitch = 0;
initData.SysMemSlicePitch = 0;
HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, (ID3D11Buffer**) &out);
if (hr == S_OK) g_pLogger->log("DxManager::CreateVertexbuffer(): Successful.", 1, false, false);
return hr;
}
答案 0 :(得分:4)
HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, (ID3D11Buffer**) &out);
最后一个参数应该是out
:没有&符号,也没有强制转换。
即。上面的行应该是:
HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, out);