#pragma once #ifndef REAL_BUILD # include "externals.hh" #endif enum class E_TexType { RGBA8 , RGBA16F , R8 , R16F , }; struct T_Texture { T_Texture( ) = delete; T_Texture( T_Texture const& ) = delete; T_Texture( T_Texture&& ) = delete; T_Texture( __rd__ const uint32_t width , __rd__ const uint32_t height , __rd__ const E_TexType type , __rd__ const uint32_t levels = 1 ); ~T_Texture( ); GLuint id( ) const noexcept { return id_; } uint32_t width( ) const noexcept { return width_; } uint32_t height( ) const noexcept { return height_; } private: GLuint id_; uint32_t width_ , height_; }; struct T_TextureBinding { T_TextureBinding( ) = delete; T_TextureBinding( T_TextureBinding const& ) = delete; T_TextureBinding( T_TextureBinding&& ) = delete; explicit T_TextureBinding( __rd__ const uint32_t binding ); void clear( ); void set( __rd__ const uint32_t uniform , __rd__ T_Texture const& texture ); void bind( ) const; private: const uint32_t binding_; uint32_t uniform_; T_Texture const* texture_; };