You.i Engine
YiGNMTextureObject.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_GNM_TEXTURE_OBJECT_H_
3 #define _YI_GNM_TEXTURE_OBJECT_H_
4 
6 #include "asset/YiAssetTexture.h"
7 
8 namespace sce
9 {
10  namespace Gnm
11  {
12  class Texture;
13  class Sampler;
14  }
15 }
16 
18 
28 {
29 public:
34 
38  virtual ~CYIGNMTextureObject();
39 
40  //Inherited from IYIGPUObject
41  virtual void Load(const std::shared_ptr<CYIAssetHardware> &pAsset) override;
42  virtual void Unload() override;
43  virtual void Use() const override;
44  virtual void Generate() override;
45  virtual void Free() override;
46  virtual void InvalidateHandle() override;
47 
51  void Configure(int32_t width,
52  int32_t height,
53  int32_t format,
54  int32_t type,
55  CYIGNMFramebufferObject *pFrameBufferObject = nullptr);
56 
57  void LoadEmpty();
58  void Bind(uint32_t slot = 0) const;
59 
60  sce::Gnm::Texture * GetGnmTexture();
61 
62 private:
63  void CleanupInternal();
64 
65  sce::Gnm::FilterMode ConvertFilterType(CYIAssetTexture::YI_MIN_MAG_FILTER filterType) const;
66  sce::Gnm::WrapMode ConvertTextureAddressType(CYIAssetTexture::YI_TEXTURE_WRAP addressType) const;
67 
68  int32_t m_width;
69  int32_t m_height;
70  int32_t m_format;
71  int32_t m_type;
72 
73  void *m_pTextureData;
74  sce::Gnm::Texture *m_pTexture;
75  sce::Gnm::Sampler *m_pSampler;
76  CYIGNMFramebufferObject *m_pFrameBufferObject;
77 };
78 
82 #endif // _YI_GNM_TEXTURE_OBJECT_H_
Definition: YiGNMTextureObject.h:8
YI_TEXTURE_WRAP
Definition: YiAssetTextureBase.h:40
An abstract class for common Gnm buffer functionality.
Definition: YiGNMAbstractBufferObject.h:17
YI_MIN_MAG_FILTER
Definition: YiAssetTextureBase.h:30
IYIGPUObject implementation for GNM textures on PS4.
Definition: YiGNMTextureObject.h:27
Definition: YiGNMFramebufferObject.h:17