1 /* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */ 2 3 #ifndef LUA_OPENGLUTILS_H 4 #define LUA_OPENGLUTILS_H 5 6 #include <string> 7 8 //#include "LuaInclude.h" 9 #include "System/type2.h" 10 11 class CMatrix44f; 12 class LuaMatTexture; 13 struct lua_State; 14 15 typedef unsigned int GLuint; 16 17 18 class LuaOpenGLUtils { 19 public: 20 static const CMatrix44f* GetNamedMatrix(const std::string& name); 21 static bool ParseTextureImage(lua_State* L, LuaMatTexture& texUnit, const std::string& image); 22 }; 23 24 25 class LuaMatTexture { 26 public: 27 enum Type { 28 LUATEX_NONE = 0, 29 LUATEX_NAMED, 30 LUATEX_LUATEXTURE, 31 LUATEX_UNITTEXTURE1, 32 LUATEX_UNITTEXTURE2, 33 LUATEX_3DOTEXTURE, 34 LUATEX_UNITBUILDPIC, 35 LUATEX_UNITRADARICON, 36 LUATEX_SHADOWMAP, 37 LUATEX_REFLECTION, 38 LUATEX_SPECULAR, 39 LUATEX_HEIGHTMAP, 40 LUATEX_SHADING, 41 LUATEX_GRASS, 42 LUATEX_FONT, 43 LUATEX_FONTSMALL, 44 LUATEX_MINIMAP, 45 46 LUATEX_INFOTEX_ACTIVE, 47 LUATEX_INFOTEX_LOSMAP, 48 LUATEX_INFOTEX_MTLMAP, 49 LUATEX_INFOTEX_HGTMAP, 50 LUATEX_INFOTEX_BLKMAP, 51 52 LUATEX_MAP_GBUFFER_NORMTEX, 53 LUATEX_MAP_GBUFFER_DIFFTEX, 54 LUATEX_MAP_GBUFFER_SPECTEX, 55 LUATEX_MAP_GBUFFER_EMITTEX, 56 LUATEX_MAP_GBUFFER_MISCTEX, 57 LUATEX_MAP_GBUFFER_ZVALTEX, 58 59 LUATEX_MODEL_GBUFFER_NORMTEX, 60 LUATEX_MODEL_GBUFFER_DIFFTEX, 61 LUATEX_MODEL_GBUFFER_SPECTEX, 62 LUATEX_MODEL_GBUFFER_EMITTEX, 63 LUATEX_MODEL_GBUFFER_MISCTEX, 64 LUATEX_MODEL_GBUFFER_ZVALTEX, 65 }; 66 67 public: LuaMatTexture()68 LuaMatTexture() 69 : type(LUATEX_NONE), data(NULL), enable(false), enableTexParams(false) {} 70 71 void Finalize(); 72 73 void Bind() const; 74 void Unbind() const; 75 76 void Print(const std::string& indent) const; 77 78 static int Compare(const LuaMatTexture& a, const LuaMatTexture& b); 79 bool operator <(const LuaMatTexture& mt) const { 80 return Compare(*this, mt) < 0; 81 } 82 bool operator==(const LuaMatTexture& mt) const { 83 return Compare(*this, mt) == 0; 84 } 85 bool operator!=(const LuaMatTexture& mt) const { 86 return Compare(*this, mt) != 0; 87 } 88 89 public: 90 Type type; 91 const void* data; 92 bool enable; 93 bool enableTexParams; 94 95 int2 GetSize() const; 96 GLuint GetTextureID() const; 97 GLuint GetTextureTarget() const; 98 99 public: 100 static const int maxTexUnits = 16; 101 }; 102 103 #endif // LUA_OPENGLUTILS_H 104