C++ 什么';s顶点缓冲区的向量和数组之间的差异
我有以下代码,可以漂亮地渲染正方形:C++ 什么';s顶点缓冲区的向量和数组之间的差异,c++,arrays,vector,C++,Arrays,Vector,我有以下代码,可以漂亮地渲染正方形: static const VertexPositionColor cubeVertices[] = { { XMFLOAT3( 1.0f, -1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.0f ) }, { XMFLOAT3( -1.0f, -1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.
static const VertexPositionColor cubeVertices[] =
{
{ XMFLOAT3( 1.0f, -1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.0f ) },
{ XMFLOAT3( -1.0f, -1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.0f ) },
{ XMFLOAT3( 1.0f, 1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.0f ) },
{ XMFLOAT3( -1.0f, 1.0f, 0.0f ), XMFLOAT3( 1.0f, 0.0f, 0.0f ) },
};
D3D11_SUBRESOURCE_DATA vertexBufferData = { 0 };
vertexBufferData.pSysMem = &cubeVertices;
vertexBufferData.SysMemPitch = 0;
vertexBufferData.SysMemSlicePitch = 0;
CD3D11_BUFFER_DESC vertexBufferDesc( sizeof( cubeVertices ), D3D11_BIND_VERTEX_BUFFER );
DX::ThrowIfFailed(
m_deviceResources->GetD3DDevice()->CreateBuffer(
&vertexBufferDesc,
&vertexBufferData,
&m_vertexBuffer[ a ]
)
);
现在,把这个代码。。。这是完全相同大小的复制品(96)。。。但是这个用的是向量。。。为什么它什么都没有
FormatCollada* colladaObj = new FormatCollada();
static const vector<VertexPositionColor> cubeVertices = colladaObj->Format( *geometryData->Collada->LibraryGeometries->Geometry[ a ] );
D3D11_SUBRESOURCE_DATA vertexBufferData = { 0 };
vertexBufferData.pSysMem = &cubeVertices;
vertexBufferData.SysMemPitch = 0;
vertexBufferData.SysMemSlicePitch = 0;
CD3D11_BUFFER_DESC vertexBufferDesc( sizeof( VertexPositionColor ) * cubeVertices.size(), D3D11_BIND_VERTEX_BUFFER );
DX::ThrowIfFailed(
m_deviceResources->GetD3DDevice()->CreateBuffer(
&vertexBufferDesc,
&vertexBufferData,
&m_vertexBuffer[ a ]
)
);
FormatCollada*colladaObj=newformatCollada();
静态常量向量立方=colladaObj->Format(*geometryData->Collada->librarygeometrics->Geometry[a]);
D3D11_子资源_数据vertexBufferData={0};
vertexBufferData.psysem=&cubeVertices;
vertexBufferData.SysMemPitch=0;
vertexBufferData.SysMemSlicePitch=0;
CD3D11_BUFFER_DESC vertexBufferDesc(sizeof(vertexositioncolor)*cubeVertices.size(),D3D11_BIND_VERTEX_BUFFER);
DX::ThrowIfFailed(
m_deviceResources->GetD3DDevice()->CreateBuffer(
&vertexBufferDesc,
&vertexBufferData,
&m_顶点缓冲区[a]
)
);
&cubeVertices
不提供向量的第一个元素的地址,而是提供向量对象本身的地址。您可能想要cubeVertices.data()