结果失败或多个参数无效
result failed on or more arguments invalid
我收到此错误
result = device->CreateBuffer(&vertexBufferDesc, &vertexData, &m_vertexBuffer);
它说无效的参数
我使用 directX11 并创建一个顶点缓冲区类
这是代码:
bool VertexBuffer::Init(ID3D11Device * device, Shader * shader, float size, bool writable)
{
m_shader = shader;
unsigned long* indices;
HRESULT result;
D3D11_BUFFER_DESC vertexBufferDesc, indexBufferDesc;
D3D11_SUBRESOURCE_DATA vertexData, indexData;
m_vertexCount = 4;
m_indexCount = 6;
m_vertices = new VertexType[m_vertexCount];
indices = new unsigned long[m_indexCount];
float halfSize = size / 2.0f;
//Hardcoded quad from here...
//Load vertex array:
m_vertices[0].position = D3DXVECTOR3(-halfSize, -halfSize, 0.0f);
m_vertices[0].uv = D3DXVECTOR2(0.0f, 1.0f);
m_vertices[1].position = D3DXVECTOR3(-halfSize, halfSize, 0.0f);
m_vertices[1].uv = D3DXVECTOR2(0.0f, 0.0f);
m_vertices[2].position = D3DXVECTOR3(halfSize, halfSize, 0.0f);
m_vertices[2].uv = D3DXVECTOR2(1.0f, 0.0f);
m_vertices[3].position = D3DXVECTOR3(halfSize, -halfSize, 0.0f);
m_vertices[3].uv = D3DXVECTOR2(1.0f, 1.0f);
//Load indices:
indices[0] = 0;
indices[1] = 1;
indices[2] = 2;
indices[3] = 0;
indices[4] = 2;
indices[5] = 3;
//To here.
//Setup vertex buffer desc:
vertexBufferDesc.Usage = (writable) ? D3D11_USAGE_DYNAMIC : D3D11_USAGE_DEFAULT;
vertexBufferDesc.ByteWidth = sizeof(VertexType)*m_vertexCount;
vertexBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vertexBufferDesc.CPUAccessFlags = (writable) ? D3D11_CPU_ACCESS_WRITE : D3D11_CPU_ACCESS_READ;
vertexBufferDesc.MiscFlags = 0;
vertexBufferDesc.StructureByteStride = 0;
//Setup vertex data:
vertexData.pSysMem = m_vertices;
vertexData.SysMemPitch = 0;
vertexData.SysMemSlicePitch = 0;
//Create vertex buffer:
result = device->CreateBuffer(&vertexBufferDesc, &vertexData, &m_vertexBuffer); // Here's the error im getting
if (FAILED(result))
{
Error(41);
return false;
}
知道怎么了?
我认为vertexBufferDesc.CPUAccessFlags
在false
时writable
设置为无效值。它应设置为 0,因为用法设置为D3D11_USAGE_DEFAULT
。从D3D11_CPU_ACCESS_FLAG文档中:
D3D11_CPU_ACCESS_READ
资源是可映射的,以便 CPU 可以读取其内容。使用此标志创建的资源不能设置为管道的输入或输出,并且必须使用暂存使用情况创建(请参阅D3D11_USAGE(。
相关文章:
- std::cin >>上的参数无效
- 结果失败或多个参数无效
- 错误:一元"*"的类型参数无效(具有"int"):使用 mergesort 计算
- 错误 带有模块的一元"*"(具有"int")的类型参数无效
- 由于调用 std::condition_variable 后参数无效而导致应用程序崩溃
- MPI_Iprobe:RMA 调用中的位移参数无效
- 推力::sort_by_key上的配置参数无效
- windres 致命错误:将输出写入时:参数无效
- 一元'*'的类型参数无效(有双精度)
- C++:传递给 C 运行时函数的参数无效
- 矢量模板参数无效
- 写入 -: 参数无效 } 时出错
- winsock2:recvfrom()函数以错误10022(参数无效)结束
- 模板参数的显式指定参数无效,该参数是 constexpr
- 模板参数无效
- 调用 getter 成员时的参数无效
- 模板模板参数中的参数无效
- 方法调用中的参数无效
- POSIX 计时器:参数无效
- C++类模板是一个模板:模板参数无效