查询可使用的工作组
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的