raze/source/build/include/glsurface.h

41 lines
1.5 KiB
C

/*
* glsurface.cpp
* A 32-bit rendering surface that can quickly blit 8-bit paletted buffers implemented in OpenGL.
*
* Copyright © 2018, Alex Dawson. All rights reserved.
*/
#ifndef GLSURFACE_H_
#define GLSURFACE_H_
#include "compat.h"
#include "palette.h"
// Initialize the glsurface with the Software renderer's buffer resolution.
// If the Software renderer's resolution and the actual resolution don't match,
// glsurface will still render at the full size of the screen.
// If a surface already exists, glsurface_destroy() will be automatically called before re-initializing.
// Returns whether or not the glsurface could be successfully initialized.
bool glsurface_initialize(vec2_t inputBufferResolution);
// Destroy an existing surface.
void glsurface_destroy();
// Sets the palette at paletteID to contain the byte buffer pointed to by pPalette.
// If the surface is not initialized, the function returns immediately.
void glsurface_setPalette(int32_t paletteID, void* pPalette);
// Returns a pointer to the start of the surface's pixel buffer
// Returns NULL if the surface is not initialized.
void* glsurface_getBuffer();
// Returns the resolution of the surface's buffer
vec2_t glsurface_getBufferResolution();
// Blit the surface's pixel buffer to the screen.
// paletteID is the id of a palette previously set with glsurface_setPalette().
// Renders as soon as the data has been uploaded.
// If the surface is not initialized, the function returns immediately.
void glsurface_blitBuffer(int32_t paletteID);
#endif /* GLSURFACE_H_ */