【发布时间】:2017-11-19 21:46:08
【问题描述】:
我遇到了一个奇怪的问题:我有一个片段着色器,其中包含几个统一变量(mat4、vec4)、一个 sampler2D 和一个巨大的 SSBO(1GB-2GB)。对于每种类型的变量,它不超过硬件的大小限制。没有 SSBO,着色器可以正常工作。使用 SSBO,如果纹理图像的分辨率较低(768x768x4 浮点数),着色器也可以正常工作。但是,如果分辨率达到 1024+ x 1024+,程序会立即在 NVIDIA 驱动程序中崩溃。我已经在 GTX980 Ti 和 Quadro P5000 上对其进行了测试。 这个问题都发生了。
不知着色器资源的使用是否有限制。
【问题讨论】:
-
这与请求处理 CPU 中的 RAM 限制相同,不同之处在于没有交换磁盘。纹理必须适合 GPU RAM,否则并行性消失(阅读:崩溃或无绘图)。我相信您可以找到一种方法将您的数据分成几部分,然后将它们连续发送到 GPU。
标签: opengl shader opengl-4 shader-storage-buffer