question: private void initComputeProgram ( ) { glUseProgram ( computeProgram ) ; IntBuffer workGroupSize = BufferUtils . createIntBuffer ( 3 ) ; glGetProgramiv ( computeProgram , GL_COMPUTE_WORK_GROUP_SIZE , workGroupSize ) ; workGroupSizeX = workGroupSize . get ( 0 ) ; workGroupSizeY = workGroupSize . get ( 1 ) ; timeUniform = glGetUniformLocation ( computeProgram , "time" ) ; blendFactorUniform = glGetUniformLocation ( computeProgram , "blendFactor" ) ; lightRadiusUniform = glGetUniformLocation ( computeProgram , "lightRadius" ) ; IntBuffer props = BufferUtils . createIntBuffer ( 1 ) ; IntBuffer params = BufferUtils . createIntBuffer ( 1 ) ; props . put ( 0 , GL_BUFFER_BINDING ) ; int objectsResourceIndex = glGetProgramResourceIndex ( computeProgram , GL_SHADER_STORAGE_BLOCK , "Objects" ) ; glGetProgramResourceiv ( computeProgram , GL_SHADER_STORAGE_BLOCK , objectsResourceIndex , props , null , params ) ; objectsSsboBinding = params . get ( 0 ) ; int trianglesResourceIndex = glGetProgramResourceIndex ( computeProgram , GL_SHADER_STORAGE_BLOCK , "Triangles" ) ; glGetProgramResourceiv ( computeProgram , GL_SHADER_STORAGE_BLOCK , trianglesResourceIndex , props , null , params ) ; trianglesSsboBinding = params . get ( 0 ) ; int loc = glGetUniformLocation ( computeProgram , "framebufferImage" ) ; glGetUniformiv ( computeProgram , loc , params ) ; framebufferImageBinding = params . get ( 0 ) ; loc = glGetUniformLocation ( computeProgram , "worldPositionImage" ) ; glGetUniformiv ( computeProgram , loc , params ) ; worldPositionImageBinding = params . get ( 0 ) ; loc = glGetUniformLocation ( computeProgram , "worldNormalImage" ) ; glGetUniformiv ( computeProgram , loc , params ) ; worldNormalImageBinding = params . get ( 0 ) ; glUseProgram ( 0 ) ; }
target:  Initialize the compute shader.