namespace glstate {
+static inline void
+resetPixelPackState(void) {
+ glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
+ glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
+ glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
+ glPixelStorei(GL_PACK_ROW_LENGTH, 0);
+ glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0);
+ glPixelStorei(GL_PACK_SKIP_ROWS, 0);
+ glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
+ glPixelStorei(GL_PACK_SKIP_IMAGES, 0);
+ glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
+}
+
+
+static inline void
+restorePixelPackState(void) {
+ glPopClientAttrib();
+}
+
+
static void
dumpShader(JSONWriter &json, GLuint shader)
{
GLubyte *pixels = new GLubyte[depth*width*height*4];
+ resetPixelPackState();
+
glGetTexImage(target, level, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
+ restorePixelPackState();
+
json.beginMember("__data__");
char *pngBuffer;
int pngBufferSize;
return NULL;
}
- GLint drawbuffer = GL_NONE;
- GLint readbuffer = GL_NONE;
- glGetIntegerv(GL_DRAW_BUFFER, &drawbuffer);
- glGetIntegerv(GL_READ_BUFFER, &readbuffer);
- glReadBuffer(drawbuffer);
+ GLint draw_buffer = GL_NONE;
+ GLint read_buffer = GL_NONE;
+ glGetIntegerv(GL_DRAW_BUFFER, &draw_buffer);
+ glGetIntegerv(GL_READ_BUFFER, &read_buffer);
+ glReadBuffer(draw_buffer);
- glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
- glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
- glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
- glPixelStorei(GL_PACK_ROW_LENGTH, 0);
- glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0);
- glPixelStorei(GL_PACK_SKIP_ROWS, 0);
- glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_PACK_SKIP_IMAGES, 0);
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ resetPixelPackState();
glReadPixels(0, 0, width, height, format, GL_UNSIGNED_BYTE, image->pixels);
- glPopClientAttrib();
-
- glReadBuffer(readbuffer);
+ restorePixelPackState();
+ glReadBuffer(read_buffer);
return image;
}
GLubyte *pixels = new GLubyte[width*height*channels];
- GLint drawbuffer = GL_NONE;
- GLint readbuffer = GL_NONE;
- glGetIntegerv(GL_DRAW_BUFFER, &drawbuffer);
- glGetIntegerv(GL_READ_BUFFER, &readbuffer);
- glReadBuffer(drawbuffer);
+ GLint draw_buffer = GL_NONE;
+ GLint read_buffer = GL_NONE;
+ glGetIntegerv(GL_DRAW_BUFFER, &draw_buffer);
+ glGetIntegerv(GL_READ_BUFFER, &read_buffer);
+ glReadBuffer(draw_buffer);
- glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
- glPixelStorei(GL_PACK_SWAP_BYTES, GL_FALSE);
- glPixelStorei(GL_PACK_LSB_FIRST, GL_FALSE);
- glPixelStorei(GL_PACK_ROW_LENGTH, 0);
- glPixelStorei(GL_PACK_IMAGE_HEIGHT, 0);
- glPixelStorei(GL_PACK_SKIP_ROWS, 0);
- glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
- glPixelStorei(GL_PACK_SKIP_IMAGES, 0);
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ resetPixelPackState();
glReadPixels(0, 0, width, height, format, GL_UNSIGNED_BYTE, pixels);
- glPopClientAttrib();
- glReadBuffer(readbuffer);
+ restorePixelPackState();
+ glReadBuffer(read_buffer);
json.beginMember("__data__");
char *pngBuffer;