mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-31 03:41:01 +00:00
Thumbnail generation fix on GLES by glReadPixels(RGBA) instead of RGB.
This commit is contained in:
committed by
Baldur Karlsson
parent
5fd460ecba
commit
f19e67bb59
@@ -2809,9 +2809,21 @@ WrappedOpenGL::BackbufferImage *WrappedOpenGL::SaveBackbufferImage()
|
||||
thwidth = m_InitParams.width;
|
||||
thheight = m_InitParams.height;
|
||||
|
||||
thpixels = new byte[thwidth * thheight * 3];
|
||||
thpixels = new byte[thwidth * thheight * 4];
|
||||
|
||||
m_Real.glReadPixels(0, 0, thwidth, thheight, eGL_RGB, eGL_UNSIGNED_BYTE, thpixels);
|
||||
// GLES only supports GL_RGBA
|
||||
m_Real.glReadPixels(0, 0, thwidth, thheight, eGL_RGBA, eGL_UNSIGNED_BYTE, thpixels);
|
||||
|
||||
// RGBA -> RGB
|
||||
for(uint32_t y = 0; y < thheight; y++)
|
||||
{
|
||||
for(uint32_t x = 0; x < thwidth; x++)
|
||||
{
|
||||
thpixels[(y * thwidth + x) * 3 + 0] = thpixels[(y * thwidth + x) * 4 + 0];
|
||||
thpixels[(y * thwidth + x) * 3 + 1] = thpixels[(y * thwidth + x) * 4 + 1];
|
||||
thpixels[(y * thwidth + x) * 3 + 2] = thpixels[(y * thwidth + x) * 4 + 2];
|
||||
}
|
||||
}
|
||||
|
||||
// flip the image in-place
|
||||
for(uint32_t y = 0; y <= thheight / 2; y++)
|
||||
@@ -2821,17 +2833,17 @@ WrappedOpenGL::BackbufferImage *WrappedOpenGL::SaveBackbufferImage()
|
||||
for(uint32_t x = 0; x < thwidth; x++)
|
||||
{
|
||||
byte save[3];
|
||||
save[0] = thpixels[y * (thwidth * 3) + x * 3 + 0];
|
||||
save[1] = thpixels[y * (thwidth * 3) + x * 3 + 1];
|
||||
save[2] = thpixels[y * (thwidth * 3) + x * 3 + 2];
|
||||
save[0] = thpixels[(y * thwidth + x) * 3 + 0];
|
||||
save[1] = thpixels[(y * thwidth + x) * 3 + 1];
|
||||
save[2] = thpixels[(y * thwidth + x) * 3 + 2];
|
||||
|
||||
thpixels[y * (thwidth * 3) + x * 3 + 0] = thpixels[flipY * (thwidth * 3) + x * 3 + 0];
|
||||
thpixels[y * (thwidth * 3) + x * 3 + 1] = thpixels[flipY * (thwidth * 3) + x * 3 + 1];
|
||||
thpixels[y * (thwidth * 3) + x * 3 + 2] = thpixels[flipY * (thwidth * 3) + x * 3 + 2];
|
||||
thpixels[(y * thwidth + x) * 3 + 0] = thpixels[(flipY * thwidth + x) * 3 + 0];
|
||||
thpixels[(y * thwidth + x) * 3 + 1] = thpixels[(flipY * thwidth + x) * 3 + 1];
|
||||
thpixels[(y * thwidth + x) * 3 + 2] = thpixels[(flipY * thwidth + x) * 3 + 2];
|
||||
|
||||
thpixels[flipY * (thwidth * 3) + x * 3 + 0] = save[0];
|
||||
thpixels[flipY * (thwidth * 3) + x * 3 + 1] = save[1];
|
||||
thpixels[flipY * (thwidth * 3) + x * 3 + 2] = save[2];
|
||||
thpixels[(flipY * thwidth + x) * 3 + 0] = save[0];
|
||||
thpixels[(flipY * thwidth + x) * 3 + 1] = save[1];
|
||||
thpixels[(flipY * thwidth + x) * 3 + 2] = save[2];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user