xbmc
ShaderTextureDX.h
1 /*
2  * Copyright (C) 2017-2020 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "cores/RetroPlayer/shaders/IShaderTexture.h"
12 #include "guilib/D3DResource.h"
13 #include "guilib/TextureDX.h"
14 
15 #include <d3d11.h>
16 
17 namespace KODI
18 {
19 
20 namespace SHADER
21 {
22 
23 template<typename TextureType>
25 {
26 public:
27  CShaderTextureDX() = default;
28  CShaderTextureDX(TextureType* texture) : m_texture(texture) {}
29  CShaderTextureDX(TextureType& texture) : m_texture(&texture) {}
30 
31  // Destructor
32  // Don't delete texture since it wasn't created here
33  ~CShaderTextureDX() override = default;
34 
35  float GetWidth() const override { return static_cast<float>(m_texture->GetWidth()); }
36  float GetHeight() const override { return static_cast<float>(m_texture->GetHeight()); }
37 
38  void SetTexture(TextureType* newTexture) { m_texture = newTexture; }
39  void SetTexture(TextureType& newTexture) { m_texture = &newTexture; }
40 
41  ID3D11ShaderResourceView* GetShaderResource() const { return m_texture->GetShaderResource(); }
42 
43  TextureType* GetPointer() { return m_texture; }
44 
45 private:
46  TextureType* m_texture = nullptr;
47 };
48 
51 
52 } // namespace SHADER
53 } // namespace KODI
Definition: ShaderTextureDX.h:24
float GetWidth() const override
Return width of texture.
Definition: ShaderTextureDX.h:35
Definition: AudioDecoder.h:18
float GetHeight() const override
Return height of texture.
Definition: ShaderTextureDX.h:36
Definition: IShaderTexture.h:15