OpenGL VAO,DirectX11中的VBO等效项

时间:2018-11-14 21:44:18

标签: directx directx-11

我正在努力实现我们游戏引擎的Directx11实例,并且是3D游戏编程的新手。

我对DirectX11图形管道和着色器以及什么是顶点缓冲区,输入布局等有所了解。

在查看其中一个API时,代码类似于:

glBindVertexArray(current_vao);
glBindBuffer(GL_ARRAY_BUFFER, current_vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(Vector3) * Vertices.size(), &Vertices.front(), GL_DYNAMIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vector3), reinterpret_cast<void*>(0));
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(3);
glDisableVertexAttribArray(4);
glDisableVertexAttribArray(5);
glDisableVertexAttribArray(6);
glBindBuffer(GL_ARRAY_BUFFER, 0);

VAO中的VBODirectX11等效是什么?这段代码到底在做什么?

1 个答案:

答案 0 :(得分:1)

“ VBO”只是一个顶点缓冲区,在DirectX 11中是一个ID3D11Buffer,绑定标记为D3D11_BIND_VERTEX_BUFFER,其中包含顶点数据。

没有直接等效于OpenGL“顶点属性数组”的功能。在DirectX 11中,您只需为每组相似的状态设置(也称为材料属性)提交一个不同的Draw

  

如果您是DirectX 11的新手,则可以考虑阅读[DirectX Tool Kit教程