>假设我在glsl着色器中有一个SSBO,如下所示。
layout(std430, binding = 10) buffer myData
{
uint64_t intArray[];
};
在主机上,我将动态分配 SSBO。在着色器中,我将数据写入这个"intArray"变量。如何检测我的着色器代码是否在数组边界内访问?是否有任何工具可以进行检查(类似于valgrind,pageheap,-fsanitize,...在 CPU 上(?
编辑:一般来说,有什么方法可以分析glsl代码并找出内存问题吗?
确定您是否在数组中访问的最简单方法是获取数组的大小并检查您将要使用的索引是否访问了它。 intArray.length()
将根据绑定到该 SSBO 绑定点的缓冲区的大小范围为您提供数组的运行时长度。