GLSL中的HLSL cbuffer等效项

可能

HLSL具有cbuffer可用于查找表的类型。

cbufferOpenGL中s的等效项是什么推荐的查找表存储方式是什么?

尼科尔·波拉斯(Nicol Bolas)

GLSL中“ cbuffer”的等效功能是一个统一的接口块,其数据来自缓冲区对象该概念的整体称为“统一缓冲区对象”。尽管与D3D不同,但OpenGL并未将这些缓冲区标记为与任何其他类型的缓冲区对象没有任何区别。因此,您可以将同一缓冲区对象用于存储制服和顶点数据,或者(更有用的)用作变换反馈操作的输出。管他呢。

在着色器中声明一个统一块,有点像HLSL cbuffers,但是以GLSL样式声明:

uniform BlockName
{
  vec4 someVariable;
} optionalInstanceName;

虽然UBO是OpenGL 3.1的功能,但如果要使块与着色器中的绑定索引相关联,则需要使用OpenGL 4.2或ARB_shading_language_420pack:

//BlockName uses binding point 0.
layout(binding = 0) uniform BlockName
{
  vec4 someVariable;
} optionalInstanceName;

如果没有此功能,则必须使用glUniformBlockBinding​手动设置名为的块的绑定点BlockName尽管首先您必须使用来查询该块的索引glGetUniformBlockIndex​但是一旦设置,它便成为程序对象状态的一部分,因此您无需设置多次。

无论如何,我都不会将UBO或cbuffer表征为“查找表”。特别是在HLSL中,“ cbuffer”是将统一数据获取到着色器的主要方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档