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
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef CUBEMAP_HANDLER_HDR
#define CUBEMAP_HANDLER_HDR
#include "Rendering/GL/FBO.h"
class CubeMapHandler {
public:
CubeMapHandler();
bool Init();
void Free();
void UpdateReflectionTexture();
void UpdateSpecularTexture();
unsigned int GetEnvReflectionTextureID() const { return envReflectionTexID; }
unsigned int GetSkyReflectionTextureID() const { return skyReflectionTexID; }
unsigned int GetSpecularTextureID() const { return specularTexID; }
unsigned int GetReflectionTextureSize() const { return reflTexSize; }
unsigned int GetSpecularTextureSize() const { return specTexSize; }
private:
void CreateReflectionFace(unsigned int, const float3&, bool);
inline void CreateSpecularFacePart(unsigned int, unsigned int, const float3&, const float3&, const float3&, unsigned int, unsigned char*);
void CreateSpecularFace(unsigned int, unsigned int, const float3&, const float3&, const float3&);
void UpdateSpecularFace(unsigned int, unsigned int, const float3&, const float3&, const float3&, unsigned int, unsigned char*);
unsigned int envReflectionTexID; // sky and map
unsigned int skyReflectionTexID; // sky only
unsigned int specularTexID;
unsigned int reflTexSize;
unsigned int specTexSize;
unsigned int currReflectionFace;
unsigned int specularTexIter;
bool mapSkyReflections;
std::vector<unsigned char> specTexBuf;
FBO reflectionCubeFBO;
};
extern CubeMapHandler* cubeMapHandler;
#endif
|