5 int fb_width, fb_height, fb_npix;
10 struct erb_rend *erb_create(void)
14 if(!(erb = calloc(1, sizeof *erb))) {
20 void erb_destroy(struct erb_rend *erb)
27 int erb_allocframe(struct erb_rend *erb, int width, int height)
33 if(width == erb->fb_width && height == erb->fb_height) {
37 npix = width * height;
39 if(!(newfb = malloc(npix * 3 * sizeof *erb->fb_pixels))) {
42 if(!(newns = malloc(npix * sizeof *erb->fb_nsamples))) {
48 free(erb->fb_nsamples);
50 erb->fb_pixels = newfb;
51 erb->fb_nsamples = newns;
52 erb->fb_width = width;
53 erb->fb_height = height;
58 fprintf(stderr, "erb_allocframe: failed to allocate %dx%d framebuffer\n", width, height);
62 float *erb_getframe(struct erb_rend *erb)
64 return erb->fb_pixels;
67 void erb_begin(struct erb_rend *erb)
69 memset(erb->fb_pixels, 0, erb->fb_npix * 3 * sizeof *erb->fb_pixels);
70 memset(erb->fb_nsamples, 0, erb->fb_npix * sizeof *erb->fb_nsamples);
73 float *erb_end(struct erb_rend *erb)
77 float *pptr = erb->fb_pixels;
78 int *nptr = erb->fb_nsamples;
80 for(i=0; i<erb->fb_npix; i++) {
94 return erb->fb_pixels;