diff options
Diffstat (limited to 'source/libs/asura-lib-core/graphics/texture.h')
| -rw-r--r-- | source/libs/asura-lib-core/graphics/texture.h | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/source/libs/asura-lib-core/graphics/texture.h b/source/libs/asura-lib-core/graphics/texture.h new file mode 100644 index 0000000..c412b2e --- /dev/null +++ b/source/libs/asura-lib-core/graphics/texture.h @@ -0,0 +1,68 @@ +#ifndef __ASURA_ENGINE_TEXTURE_H__ +#define __ASURA_ENGINE_TEXTURE_H__ + +#include <asura-lib-utils/math/rect.hpp> +#include <asura-lib-utils/math/vector2.hpp> +#include <asura-lib-utils/scripting/portable.hpp> + +#include "../core_config.h" + +#include "render_state.h" +#include "gl.h" + +namespace AsuraEngine +{ + namespace Graphics + { + + class RenderTarget; + + /// + /// 2DÎÆÀí³éÏóÀ࣬ÔÚ2d meshºÍrender targetÖб»Ê¹Óá£TextureµÄäÖȾԵãÔÚ×óÉϽǣ¬ÓÎÏ·ÀïÃæµÄÉϲã»áÒԵѿ¨¶û×ø±êϵΪ±ê×¼¡£ + /// ÔÚEditorÀïÃæ½çÃæºÍ×é¼þÒ²ÊÇÒÔ×óÉϽÇΪԵ㣬ÕâÑùÊÇΪÁË·½±ã¡£ + /// + ASURA_ABSTRACT class Texture + { + public: + + Texture(); + + virtual ~Texture(); + + GLuint GetGLTextureHandle() const; + + /// + /// äÖȾÕû¸ötextureµ½rtÉÏ£¬ÔµãÔÚ×óÉϽǣ¬ÏòÓÒ£¬ÏòÏÂÑÓÉì + /// + virtual void Render(const RenderTarget* rt, const RenderState& state) = 0; + + /// + /// äÖȾtextureµÄÒ»²¿·Öµ½rtÉÏ£¬ÔµãÔÚ×óÉϽǣ¬ÏòÓÒ£¬ÏòÏÂÑÓÉì¡£ + /// + virtual void Render(const RenderTarget* rt, const Math::Rectf& quad, const RenderState& state) = 0; + + /// + /// ÉèÖùýÂË·½Ê½ + /// + void SetSmooth(bool smooth); + + /// + /// ÉèÖÃÖØ¸´·½Ê½ + /// + void SetRepeated(); + + protected: + + /// + /// OpenGL texture handle¡£ + /// + GLuint mTextureHandle; + + }; + + using Drawable = Texture; + + } +} + +#endif
\ No newline at end of file |
