#define WIDTH 1280
#define HEIGHT 720
-#define BUFFER_OFFSET(i) ((char *)NULL + (i))
#include <string.h>
#include <math.h>
#include <time.h>
+#include <sys/time.h>
#include <assert.h>
#include <string>
SDL_PixelFormat *fmt = img->format;
SDL_LockSurface(img);
unsigned char *src_pixels = (unsigned char *)img->pixels;
- unsigned char *dst_pixels = (unsigned char *)malloc(img->w * img->h * 3);
+ unsigned char *dst_pixels = (unsigned char *)malloc(img->w * img->h * 4);
for (int i = 0; i < img->w * img->h; ++i) {
unsigned char r, g, b;
unsigned int temp;
temp = temp << fmt->Bloss;
b = temp;
- dst_pixels[i * 3 + 0] = r;
- dst_pixels[i * 3 + 1] = g;
- dst_pixels[i * 3 + 2] = b;
+ dst_pixels[i * 4 + 0] = b;
+ dst_pixels[i * 4 + 1] = g;
+ dst_pixels[i * 4 + 2] = r;
+ dst_pixels[i * 4 + 3] = 255;
}
SDL_UnlockSurface(img);
EffectChain chain(WIDTH, HEIGHT);
ImageFormat inout_format;
- inout_format.pixel_format = FORMAT_RGB;
+ inout_format.pixel_format = FORMAT_BGRA;
inout_format.color_space = COLORSPACE_sRGB;
inout_format.gamma_curve = GAMMA_sRGB;
vignette_effect->set_float("inner_radius", inner_radius);
chain.render_to_screen(src_img);
+ glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 1);
+ check_error();
glReadPixels(0, 0, WIDTH, HEIGHT, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, BUFFER_OFFSET(0));
check_error();
+ glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+ check_error();
draw_hsv_wheel(0.0f, lift_rad, lift_theta, lift_v);
draw_hsv_wheel(0.2f, gamma_rad, gamma_theta, gamma_v);
SDL_GL_SwapBuffers();
check_error();
+ glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 1);
+ check_error();
unsigned char *screenbuf = (unsigned char *)glMapBuffer(GL_PIXEL_PACK_BUFFER_ARB, GL_READ_ONLY);
check_error();
if (screenshot) {
}
glUnmapBuffer(GL_PIXEL_PACK_BUFFER_ARB);
check_error();
+ glBindBuffer(GL_PIXEL_PACK_BUFFER_ARB, 0);
+ check_error();
#if 1
#if _POSIX_C_SOURCE >= 199309L