solvespace/src/platform/gloffscreen.h
whitequark fa546af28f Move all platform-specific code to src/platform/.
Without resources, it makes no sense anymore to keep these in
separate subdirectories: unixutil* is shared between Cocoa
and GTK ports, and gloffscreen* should be shared between all ports
(but it's still platform-specific).
2016-05-18 11:24:24 +00:00

37 lines
1.2 KiB
C++

//-----------------------------------------------------------------------------
// Offscreen rendering in OpenGL using framebuffer objects.
//
// Copyright 2015 <whitequark@whitequark.org>
//-----------------------------------------------------------------------------
#ifndef __GLOFFSCREEN_H
#define __GLOFFSCREEN_H
#include <stdint.h>
class GLOffscreen {
public:
/* these allocate and deallocate OpenGL resources.
an OpenGL context /must/ be current. */
GLOffscreen();
~GLOffscreen();
/* prepare for drawing a frame of specified size.
returns true if OpenGL likes our configuration, false
otherwise. if it returns false, the OpenGL state is restored. */
bool begin(int width, int height);
/* get pixels out of the frame and restore OpenGL state.
the pixel format is ARGB32 with top row at index 0 if
flip is true and bottom row at index 0 if flip is false.
the returned array is valid until the next call to begin() */
uint8_t *end(bool flip = true);
private:
unsigned int _framebuffer;
unsigned int _color_renderbuffer, _depth_renderbuffer;
uint32_t *_pixels, *_pixels_inv;
int _width, _height;
};
#endif