1

我只是试着这样做

C++

struct PointLight
{
    glm::vec4 position;
    glm::vec4 colour;
};

std::vector <PointLight> lights_array;

GLSL 320 ES:

layout (std140) struct PointLight
{
    vec4 position;
    vec4 colour;
};

layout (std140) buffer Lights 
{
    int        count;
    PointLight data [];
}
b_lights;

编译错误让我吃惊:

error C7600: no value specified for layout qualifier 'std140'

我找不到直接的答案,但我得到的印象是我无法为结构定义指定 std140。是这样吗?或者我该如何拼写?

如果不是,那么我如何保证我可以发送lights_array到,glBufferData以便它在着色器b_lights.data数组中具有正确的布局?

换句话说,为什么std140需要 thebuffer而不是struct

4

1 回答 1

3

接口块有布局,而不是结构。布局适用于块如何通过其整个内容递归地布置其元素。

因此,您无需将界面块布局应用于随机结构。

于 2019-09-03T17:37:32.383 回答