我正在实现我们的游戏引擎的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和VBO在DirectX11中的等价性是什么?这段代码到底在做什么?
发布于 2018-11-14 22:05:51
"VBO“只是一个顶点缓冲区,在DirectX 11中,它是一个绑定标志为D3D11_BIND_VERTEX_BUFFER的ID3D11Buffer,其中包含顶点数据。
没有与OpenGL“顶点属性数组”直接等效的方法。在DirectX 11中,您只需为每组相似的状态设置(即物质属性)提交一个不同的Draw。
如果您对DirectX 11完全陌生,可以考虑阅读[DirectX工具包教程]。
https://stackoverflow.com/questions/53309175
复制相似问题