initial commit
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
#ifndef HYDRATEXTUREBUFFERMANAGER
|
||||
#define HYDRATEXTUREBUFFERMANAGER
|
||||
|
||||
#include "../engine/HydraObject.h"
|
||||
#include "HydraTexureBuffer.h"
|
||||
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <unordered_map>
|
||||
#include <GLMIncludes.h>
|
||||
#include <stb_image.h>
|
||||
#include <mutex>
|
||||
#include <string>
|
||||
#include "../GlewIncludes.h"
|
||||
|
||||
class HydraTextureBufferManager : public HydraObject
|
||||
{
|
||||
public:
|
||||
void Intialise();
|
||||
void Shutdown();
|
||||
HydraID CreateTexture(std::string texture_name, uint32_t width, uint32_t height, uint32_t internal_format,
|
||||
uint32_t min_filter, uint32_t mag_filter,
|
||||
uint32_t format = GL_RGBA, uint32_t data_type = GL_UNSIGNED_BYTE, uint32_t mip_levels = 0, void* data = nullptr);
|
||||
void BindTexture(HydraID texture_id);
|
||||
void UnbindTexture(HydraID texture_id);
|
||||
void DeleteTexture(HydraID texture_id);
|
||||
HydraID LoadTexture(std::string texture_filename);
|
||||
HydraID FindTexture(std::string texture_name);
|
||||
void* GetTextureBuffer();
|
||||
const HydraTextureBuffer& GetTexture(HydraID texture_id);
|
||||
|
||||
private:
|
||||
HydraID _GetTextureID();
|
||||
std::mutex m_mutex;
|
||||
std::queue<HydraID> m_available_texture_ids;
|
||||
std::vector<HydraTextureBuffer> m_textures;
|
||||
std::vector<uint64_t> m_bindless_texture_ids;
|
||||
std::unordered_map<std::string, HydraID> m_texture_lookup;
|
||||
uint32_t m_gl_texture_id = 0;
|
||||
};
|
||||
|
||||
#endif /* HYDRATEXTUREBUFFERMANAGER */
|
||||
Reference in New Issue
Block a user