diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index e1075a476..e9ad1747a 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -2434,12 +2434,13 @@ void GLReplay::GetTextureData(ResourceId tex, const Subresource &sub, remapFormat = GetViewCastedFormat(remapFormat, typeCast); - if(intFormat != remapFormat) + GLenum newtarget = (texType == eGL_TEXTURE_3D ? eGL_TEXTURE_3D : eGL_TEXTURE_2D); + + if(intFormat != remapFormat || newtarget != texType) { MakeCurrentReplayContext(m_DebugCtx); GLenum finalFormat = remapFormat; - GLenum newtarget = (texType == eGL_TEXTURE_3D ? eGL_TEXTURE_3D : eGL_TEXTURE_2D); // create temporary texture of width/height in the new format to render to drv.glGenTextures(1, &tempTex);