c++ - 最小保证着色器存储块大小是多少?
问题描述
如果它存在,我似乎找不到它。我遇到了统一缓冲区的问题,其中 gl 规范给出的最小大小仅为 1024 个位置。我可以在着色器中为 SSBO 引用的位置数量是否有设定的最小值?例如,如果我希望能够访问 10,000mat4
秒?
此外,在当前的现代硬件上,使用 SSBO 与使用顶点缓冲区之间是否存在显着的性能差异?
使用 SSBO、VBO 或几何着色器大致比较如何?(这在存储/扩展顶点的上下文中)。如果没有一般案例答案,我将对其进行分析。
解决方案
最大着色器存储块大小可以通过
GLint64 size;
glGetInteger64v(GL_MAX_SHADER_STORAGE_BLOCK_SIZE, &size)
由规范保证的着色器存储块大小的最小值是 2^27 (128MB)。
请参见OpenGL 4.6 API Core Profile Specification - State Tables分别为Shader Storage Buffer Object
推荐阅读
- android - Android Layout - 隐藏键盘时防止布局缩小
- python - python: 三边形轮
- arrays - 如何使用 jq 数组值返回 true
- ruby - 当我不要求它时,为什么 ruby 会改变我的数组?
- python - 为什么使用 cv2.calcHist 总是有一个错误“返回 NULL 而没有设置错误”
- python-3.x - py2neo:ImportError:无法导入名称“Rev”
- python - 计算运送一定数量乘客的最便宜的大小客车数量
- python - 从 DBSCAN python 输出集群中的点数
- python - 如何在 pandas 中优化这种类型的搜索和替换
- arrays - if 和 else 的执行如何在 python 中的 while 语句中工作