gpt4 book ai didi

opengl - D3D 输入槽到底是什么以及 OpenGL 的等效项是什么?

转载 作者:行者123 更新时间:2023-12-02 20:46:26 25 4
gpt4 key购买 nike

在 Direct3D 中,当我们使用 D3D11_INPUT_ELEMENT_DESC 指定顶点着色器的输入以及调用 IASetVertexBuffers 时,我们必须指定“输入槽”。这些输入槽到底是什么?OpenGL 等效项是什么?这些输入槽似乎与 GLSL 中通过 layout(location = K)glVertexAttribPointer 的第一个参数指定的“位置”不同。

最佳答案

顶点输入来自存储在缓冲区中的值数组。 SemanticIndex 标识输入在着色器中的位置。 InputSlot 定义哪个缓冲区提供该属性的数据。缓冲区不绑定(bind)到语义索引;它们绑定(bind)到输入槽。

看,D3D 有两个数组:一个语义数组(与着色器中定义的语义匹配)和一个输入槽数组。您使用的每个语义都有一个 INPUT_DESC 结构,它指定(除其他外)从语义到提供它的输入槽的映射。顶点缓冲区绑定(bind)到输入槽。使用这些插槽的任何输入都将从同一缓冲区中提取数据。特定的输入可以有一个偏移量来决定如何访问其顶点数据;这允许交错顶点数据。

OpenGL 4.3/ARB_separate_attrib_format提供similar concepts使用glVertexAttribFormatglVertexAttribBinding。前者指定顶点数据去往哪个属性位置。后者指定哪个缓冲区绑定(bind)索引将提供该属性。缓冲区通过 glBindVertexBuffer(s) 绑定(bind)到缓冲区绑定(bind)索引。

使用较旧的 glBindBuffer(GL_ARRAY_BUFFER)/glVertexAttribPointer API 时,缓冲区绑定(bind)索引和属性位置索引实际上是相同的。但这是一个很差的 API,如果您不需要支持旧的 GL 版本,我建议您使用较新的东西。

关于opengl - D3D 输入槽到底是什么以及 OpenGL 的等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44216968/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com