computer shader对于硬件性能参数查询

查询可使用的工作组

  GLint max_work_group_size[3];
  GLint max_work_group_invocations;
  glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 0, &max_work_group_size[0]);  // x维度可以支持工作组的数量
  glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 1, &max_work_group_size[1]);   // y维度可以支持工作组的数量
  glGetIntegeri_v(GL_MAX_COMPUTE_WORK_GROUP_SIZE, 2, &max_work_group_size[2]);  // z维度可以支持工作组的数量
  glGetIntegerv(GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS, &max_work_group_invocations);
  • GL_MAX_COMPUTE_WORK_GROUP_INVOCATIONS:单个工作组内允许运行的线程(Invocation)总数上限。也就是说xyz > max_work_group_invocations。那computer shader程序也不会执行的,也就是说,你创建的progra的id直接等于0,理论上program创建成功是不会等于0的
posted @ 2026-01-15 10:23  九叶草  阅读(3)  评论(0)    收藏  举报