Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenGL统一缓冲区std14布局,windows上正常,macos上错误_C++ - Fatal编程技术网

C++ OpenGL统一缓冲区std14布局,windows上正常,macos上错误

C++ OpenGL统一缓冲区std14布局,windows上正常,macos上错误,c++,C++,我编写了一个简单的测试程序来测试统一缓冲区,它在windows上正常运行,但在macos上运行错误 在窗户上 关于马科斯 着色器中的统一缓冲区布局 struct Instance { vec4 offset; // offset 0 vec4 color; // offset 16 float a; // offset 32 float b; // offset 36 float c; // offset 40 }; layout

我编写了一个简单的测试程序来测试统一缓冲区,它在windows上正常运行,但在macos上运行错误

在窗户上 关于马科斯

着色器中的统一缓冲区布局

struct Instance {
    vec4 offset;  // offset 0
    vec4 color;  // offset 16
    float a;    // offset 32
    float b;    // offset 36
    float c;    // offset 40
};

layout (std140) uniform InstanceBlock {
    Instance instances[36];
};
C++结构

struct Instance {
  std::array<float, 4> offset;
  std::array<float, 4> color;
        
  float a;
  float b;
  float c;
  float padding;
};
std::vector<Instance> instance;
for (int i =0; i < 6; i++) {
    for (int j =0; j < 6; j++) {
        std::array<float, 4> color = {
        rand() / (float)RAND_MAX,
        rand() / (float)RAND_MAX,
        rand() / (float)RAND_MAX,
        1.0f
      };
      std::array<float, 4> of = {0, 0, 0, 0};
      instance.push_back(Instance{of, color, (float)i, (float)j, 1.0f});
    }
}
struct实例{
std::阵列偏移;
std::数组颜色;
浮动a;
浮球b;
浮点数c;
浮垫;
};
std::向量实例;
对于(int i=0;i<6;i++){
对于(int j=0;j<6;j++){
std::数组颜色={
rand()/(浮动)rand_MAX,
rand()/(浮动)rand_MAX,
rand()/(浮动)rand_MAX,
1.0f
};
数组={0,0,0,0};
向后推(实例{of,color,(float)i,(float)j,1.0f});
}
}

我的代码是错误还是驱动程序错误?

关于
std140
布局能否回答您的问题?问题很可能来自您的
填充
字段,我怀疑该字段依赖于实现。从对另一个问题的回答来看,您没有在上面的文章中找到我想要的答案。由于模型兼容性问题,无法在程序中使用顶点纹理提取。关于
std140
layout能否回答您的问题?问题很可能来自您的
填充
字段,我怀疑该字段依赖于实现。从对另一个问题的回答来看,您没有在上面的文章中找到我想要的答案。由于模型兼容性问题,无法在程序中使用顶点纹理提取。