I tried to modify a 3D texture in a compute shader with a fixed value, but it seems the texture has never changed.
Code :#version 430 compatibility layout(r8) uniform image3D destTex; layout (local_size_x = 36, local_size_y = 36,local_size_z = 1) in; void main() { ivec3 storePos = ivec3(gl_GlobalInvocationID.xyz); imageStore(destTex, storePos, vec4(3.0/255.0)); }
Code :glActiveTexture(GL_TEXTURE3); glBindTexture(GL_TEXTURE_3D,m_uiMaskPoolTexID); glTexImage3D(GL_TEXTURE_3D, 0, GL_R8, m_aBrickPoolDim[0], m_aBrickPoolDim[1], m_aBrickPoolDim[2], 0, GL_RED, GL_UNSIGNED_BYTE, nullptr); glBindImageTexture(3, m_uiMaskPoolTexID, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_R8); glBindTexture(GL_TEXTURE_3D,0);
Code :glEnable(GL_TEXTURE_3D); glActiveTexture(GL_TEXTURE3); glUseProgram(imaskProgram); glBindTexture(GL_TEXTURE_3D,iMask); glBindImageTexture(3, iMask, 0, GL_FALSE, 0, GL_WRITE_ONLY, GL_R8); int texp = glGetUniformLocation(imaskProgram, "destTex"); glUniform1i(texp, 3); glDispatchCompute(aBrickPoolDim[0]/36,aBrickPoolDim[1]/36,aBrickPoolDim[2]); glMemoryBarrier(GL_ALL_BARRIER_BITS); glBindTexture(GL_TEXTURE_3D,0);



Reply With Quote
