gpt4 book ai didi

opengl - 现代 OpenGL 着色器应该如何编写才能相互兼容?

转载 作者:行者123 更新时间:2023-12-04 12:37:27 27 4
gpt4 key购买 nike

在精美的 OpenGL 新版本(3.0 和 4.0 以上)中,不推荐使用 gl_Vertex 等内置顶点属性 .实际渲染任何东西的“新方法”是为位置、颜色等指定您自己的顶点属性,然后将这些自定义属性绑定(bind)到缓冲区。

我的问题是:如何在不紧密耦合渲染代码和着色器的情况下做到这一点?如果我编写一个使用“位置”作为顶点位置的着色器,使用着色器的主机代码必须知道这一点并将顶点数据作为“位置”传递。如果我想使用不同的着色器来获取“vertex_pos”中的顶点数据,我必须先重写该着色器,或者修改我的主机代码以将顶点数据作为“vertex_pos”发送。

是否有一组所有着色器都应该使用的标准顶点和片段属性的最佳实践名称? 或者是否存在特定于引擎的巴尔干化标准,以至于为一个引擎编写的着色器在不修改的情况下无法在另一个引擎上工作?或者根本就没有标准,这样,一般来说,每个对象都需要自己的自定义渲染代码来匹配它的自定义着色器?

最佳答案

只是继续称他们为旧名称。如果你有一个核心配置文件(即没有向后兼容性),旧 GLSL 规范的保留名称将被释放,声明为不可用;重新声明它们以绑定(bind)顶点属性。似乎改变了他们的可用性属性。在兼容性配置文件中,这些变量名称是预先分配和绑定(bind)的。

所以归结为:在着色器中保留旧命名是一种方便,并且似乎适用于当前的 GLSL 编译器。如果你想安全使用预处理器重写 gl_将保留名称添加到自己选择的前缀中并绑定(bind)该前缀。

关于opengl - 现代 OpenGL 着色器应该如何编写才能相互兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665723/

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