我需要从着色器访问一维大(~2MB)缓冲区。但是,我不知道应该使用哪种类型的OpenGL缓冲区。我要存储浮点数(16F)和无符号整数(16UI)。我的数据就像一个结构:
struct{
float d; //16F
int a[7]; //or a1,a2,a3,a4,a5,a6,a7; //7x16UI
}
我读过缓冲区纹理和其他类型的缓冲区(Passing a list of values to fragment shader),但它只适用于一种类型的数据(float或int),而不是两种。我可以使用两个缓冲区,但我认为这不会缓存友好也不容易。