From 6a39ec4f522dccbd962698cd5f8a60c4a2eee371 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 12 Feb 2015 21:15:13 +0000 Subject: [PATCH] Fetch texture buffer contents via GetBufferData --- renderdoc/driver/gl/gl_replay.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/renderdoc/driver/gl/gl_replay.cpp b/renderdoc/driver/gl/gl_replay.cpp index 45da9ce8b..5b30d4be9 100644 --- a/renderdoc/driver/gl/gl_replay.cpp +++ b/renderdoc/driver/gl/gl_replay.cpp @@ -2187,6 +2187,25 @@ byte *GLReplay::GetTextureData(ResourceId tex, uint32_t arrayIdx, uint32_t mip, GLsizei arraysize = 1; GLint samples = texDetails.samples; + if(texType == eGL_TEXTURE_BUFFER) + { + GLuint bufName = 0; + gl.glGetTextureLevelParameterivEXT(texname, texType, 0, eGL_TEXTURE_BUFFER_DATA_STORE_BINDING, (GLint *)&bufName); + ResourceId id = m_pDriver->GetResourceManager()->GetID(BufferRes(m_pDriver->GetCtx(), bufName)); + + GLuint offs = 0, size = 0; + gl.glGetTextureLevelParameterivEXT(texname, texType, 0, eGL_TEXTURE_BUFFER_OFFSET, (GLint *)&offs); + gl.glGetTextureLevelParameterivEXT(texname, texType, 0, eGL_TEXTURE_BUFFER_SIZE, (GLint *)&size); + + vector data = GetBufferData(id, offs, size); + + dataSize = data.size(); + ret = new byte[dataSize]; + memcpy(ret, &data[0], dataSize); + + return ret; + } + if(texType == eGL_TEXTURE_2D_ARRAY || texType == eGL_TEXTURE_2D_MULTISAMPLE_ARRAY || texType == eGL_TEXTURE_1D_ARRAY ||