gpt4 book ai didi

c++ - 无需编写自定义解析器即可将 OpenGL Shader 变量导入 C++

转载 作者:搜寻专家 更新时间:2023-10-31 00:26:24 26 4
gpt4 key购买 nike

我找不到关于此的任何信息,所以这里是:我正在尝试做的是制作一个通用游戏引擎,我希望能够加载任何 3D 对象并将任何着色器应用于该模型。

我现在需要知道着色器中的顶点属性在哪里,以便我可以将它们提供给 glVertexAttribPointer,但是,glVertexAttribPointer 会作为输入属性的位置。不同的着色器可能有不同的顶点位置。有没有办法查询着色器中的属性并将它们存储在 C++ 的列表中?

发布答案:我找到了以下 answer更详细地解释了它。

最佳答案

您可以使用 glGetActiveAttrib 查询事件着色器属性.结合glGetAttribLocation , 你可以建立这样一个查找表。

但即使使用此查找表,您也必须为网格和着色器的每种组合使用不同的 VAO。我建议你反其道而行之,定义哪个属性位置属于哪个属性。您可以使用 glBindAttribLocation 强制执行此操作在着色器编译期间,或者您在着色器中使用布局限定符 ( layout(location = ...) )。使用它,您将能够对所有着色器使用相同的 VAO。

关于c++ - 无需编写自定义解析器即可将 OpenGL Shader 变量导入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52499121/

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