GLSL无绑定纹理句柄中的正确结构布局

我一直在尝试使用以下代码来创建一个全局的无绑定纹理句柄列表,这些纹理句柄是使用UBO发送到GPU的。

struct Material
{
    sampler2D diff;
    sampler2D spec;
    sampler2D norm;

};


layout(std140,binding = 2) uniform Materials
{
    Material materials[64];
};

但是,我认为我在c ++中错误地填充了缓冲区,没有考虑正确的偏移量等。我似乎找不到关于std140布局如何处理sampler2D的任何信息。我应该怎么做?我需要考虑哪些补偿?

LIQIAN456 回答:GLSL无绑定纹理句柄中的正确结构布局

在这方面,手柄没有什么特别的。该标准说:

  

如果该成员是消耗N个基本机器单位的标量,则基本对齐-   念是N。

就“标量”而言,放大器实际上是64位整数。因此,这些成员的基本对齐方式是64位整数。但这并不是真正相关的,因为在std140中,结构的对齐方式总是四舍五入为vec4的大小。这样该结构将占用32个字节。

本文链接:https://www.f2er.com/3134385.html

大家都在问