D3D12绘制三角形失败 出现COMMAND_LIST_DRAW_VERTEX_BUFFER_TOO_SMALL警告
问题原因
你的顶点缓冲区视图配置错误,SizeInBytes和StrideInBytes两个字段的赋值完全颠倒:
StrideInBytes表示单个顶点的字节大小,对应你定义的Vertex结构体大小sizeof(Vertex)SizeInBytes表示整个顶点缓冲区的总字节大小,对应你提前计算的vertexBufferSize
你当前的配置下,DrawInstanced要绘制3个顶点,系统会认为需要3 * 24 = 72字节的缓冲区空间,但你实际申请的缓冲区只有24字节,因此触发了缓冲区过小的警告。
修正代码
只需要修改顶点缓冲区视图的赋值逻辑即可:
// Create the vertex buffer views m_vertexBufferView.BufferLocation = m_pVertexBuffer->GetGPUVirtualAddress(); m_vertexBufferView.SizeInBytes = vertexBufferSize; m_vertexBufferView.StrideInBytes = sizeof(Vertex);
内容的提问来源于stack exchange,提问作者user16513135
相关产品推荐
相关产品推荐

