规范说
[140]数组的基本对齐方式等于其元素类型的基本对齐方式,向上舍入为16的倍数。 .... [430]除了阵列和结构基础对齐,不需要四舍五入到16的倍数。
我假设静态数组的大小很简单size_of(elem_type) * length
但动态数组呢?
逻辑模式中没有指针,这是否意味着动态数组的大小为0?
我不知道哪些偏移应该应用于以下结构
struct Data {
float i1;
float[] arr;
float i2;
}
或SPIR-V表示法
%Data = OpTypeStruct %float %_runtimearr_float %float
可以这样做,或者在这里适用同样的GLSL规则,只允许在缓冲区块中只有一个动态数组,而且它必须是最后一个?
答案 0 :(得分:2)
附录A中的Vulkan定义了SPIR-V的执行环境;因此,它可以对着色器中允许的内容施加限制,超出SPIR-V规范的限制。在该附录中,它说:
#include <iostream> #include <string> #include <vector> #include <queue> using namespace std; void foo() { //queue<char> x; } int main() { //vector<int> a; //string t; cout << "Hello World!" << endl; cin.get(); return 0; }
必须仅用于OpTypeRuntimeArray
OpTypeStruct
存储类StorageBuffer
的最后一个成员,该Block
存储类设为Uniform
,或者BufferBlock
存储类装饰为$art = Article::where('id',$article)->firstOrFail(); $products = $art->products->take($limit);
。