C++ OpenGL统一缓冲区std14布局,windows上正常,macos上错误
我编写了一个简单的测试程序来测试统一缓冲区,它在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
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能否回答您的问题?问题很可能来自您的填充
字段,我怀疑该字段依赖于实现。从对另一个问题的回答来看,您没有在上面的文章中找到我想要的答案。由于模型兼容性问题,无法在程序中使用顶点纹理提取。