1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef LUA_FBOS_H
#define LUA_FBOS_H
#include <vector>
#include <string>
#include "Rendering/GL/myGL.h"
struct lua_State;
class LuaFBOs {
public:
LuaFBOs() { fbos.reserve(8); }
~LuaFBOs();
void Clear() { fbos.clear(); }
struct FBO {
void Init(lua_State* L);
void Free(lua_State* L);
GLuint index; // into LuaFBOs::fbos
GLuint id;
GLenum target;
int luaRef;
GLsizei xsize;
GLsizei ysize;
};
const FBO* GetLuaFBO(lua_State* L, int index);
public:
static bool PushEntries(lua_State* L);
private:
std::vector<FBO*> fbos;
private: // helpers
static bool CreateMetatable(lua_State* L);
static bool AttachObject(lua_State* L, int index,
FBO* fbo, GLenum attachID,
GLenum attachTarget = 0,
GLenum attachLevel = 0);
static bool ApplyAttachment(lua_State* L, int index,
FBO* fbo, GLenum attachID);
static bool ApplyDrawBuffers(lua_State* L, int index);
private: // metatable methods
static int meta_gc(lua_State* L);
static int meta_index(lua_State* L);
static int meta_newindex(lua_State* L);
private: // call-outs
static int CreateFBO(lua_State* L);
static int DeleteFBO(lua_State* L);
static int IsValidFBO(lua_State* L);
static int ActiveFBO(lua_State* L);
static int RawBindFBO(lua_State* L); // unsafe
static int BlitFBO(lua_State* L);
};
#endif /* LUA_FBOS_H */
|