gpt4 book ai didi

c++ - OpenGL 更改可分离着色器程序中的不同位置

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:54 24 4
gpt4 key购买 nike

我正在尝试将着色器与 OpenGL 的着色器程序管道混合/匹配。对于可分离的程序(以及管道),变量是按位置而不是按名称匹配的。 “干净”的解决方案是从 C 代码设置位置,但无论如何我找不到你这样做。 glGetProgramResource... 允许获取程序输出位置,但我没有找到如何设置它们。有没有办法在核心中做到这一点?如果不是,为什么不可能?

最佳答案

(注意:我实际上并没有使用可分离的着色器;这是基于我对 the ARB_separate_shader_objects spec 的阅读。)

ARB_separate_shader_objects 需要 ARB_explicit_attrib_location 扩展,它添加了 layout(location=N) 语法来指定顶点着色器输入和片段的位置着色器本身中的着色器输出,之前分别使用 glBindAttribLocationglBindFragDataLocation 完成。 ARB_separate_shader_objects 将此扩展到所有输入/输出。

我没有看到用于设置位置的 C 函数(glBindAttribLocationglBindFragDataLocation 除外),因此您必须使用布局限定符。确保您设置了适当的 GLSL 版本/扩展,并且您使用的是 in/out 关键字而不是 attribute/varying

关于c++ - OpenGL 更改可分离着色器程序中的不同位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32825164/

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