Ember

shaders

Feb 9th, 2014
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.99 KB | None | 0 0
  1.     class Shader
  2.     {
  3.     public:
  4.         // Vertex Shader ------------------------------------------------------------------
  5.         class Vertex
  6.         {
  7.         private:
  8.             Vertex() { mShader = 0; };
  9.             ~Vertex() {};
  10.  
  11.         public:
  12.             // Methods
  13.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreateVertexShader(data, size, NULL, &mShader); };
  14.             void Bind() { Engine::Get()->mWindow.mDeviceContext->VSSetShader(mShader, NULL, 0); };
  15.             void Release() { mShader->Release(); };
  16.            
  17.         private:
  18.             ID3D11VertexShader* mShader;
  19.             //--//
  20.             friend class Engine;
  21.         };
  22.  
  23.         // Pixel Shader -------------------------------------------------------------------
  24.         class Pixel
  25.         {
  26.         private:
  27.             Pixel() { mShader = 0; };
  28.             ~Pixel() {};
  29.  
  30.         public:
  31.             // Methods
  32.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreatePixelShader(data, size, NULL, &mShader); };
  33.             void Bind() { Engine::Get()->mWindow.mDeviceContext->PSSetShader(mShader, NULL, 0); };
  34.             void Release() { mShader->Release(); };
  35.  
  36.         private:
  37.             ID3D11PixelShader* mShader;
  38.             //--//
  39.             friend class Engine;
  40.         };
  41.  
  42.         // Geometry Shader ----------------------------------------------------------------
  43.         class Geometry
  44.         {
  45.         private:
  46.             Geometry() { mShader = 0; };
  47.             ~Geometry() {};
  48.  
  49.         public:
  50.             // Methods
  51.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreateGeometryShader(data, size, NULL, &mShader); };
  52.             void Bind() { Engine::Get()->mWindow.mDeviceContext->GSSetShader(mShader, NULL, 0); };
  53.             void Release() { mShader->Release(); };
  54.  
  55.         private:
  56.             ID3D11GeometryShader* mShader;
  57.             //--//
  58.             friend class Engine;
  59.         };
  60.  
  61.         // Hull Shader --------------------------------------------------------------------
  62.         class Hull
  63.         {
  64.         private:
  65.             Hull() { mShader = 0; };
  66.             ~Hull() {};
  67.  
  68.         public:
  69.             // Methods
  70.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreateHullShader(data, size, NULL, &mShader); };
  71.             void Bind() { Engine::Get()->mWindow.mDeviceContext->HSSetShader(mShader, NULL, 0); };
  72.             void Release() { mShader->Release(); };
  73.  
  74.         private:
  75.             ID3D11HullShader* mShader;
  76.             //--//
  77.             friend class Engine;
  78.         };
  79.  
  80.         // Domain Shader ------------------------------------------------------------------
  81.         class Domain
  82.         {
  83.         private:
  84.             Domain() { mShader = 0; };
  85.             ~Domain() {};
  86.  
  87.         public:
  88.             // Methods
  89.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreateDomainShader(data, size, NULL, &mShader); };
  90.             void Bind() { Engine::Get()->mWindow.mDeviceContext->DSSetShader(mShader, NULL, 0); };
  91.             void Release() { mShader->Release(); };
  92.  
  93.         private:
  94.             ID3D11DomainShader* mShader;
  95.             //--//
  96.             friend class Engine;
  97.         };
  98.  
  99.         // Compute Shader -----------------------------------------------------------------
  100.         class Compute
  101.         {
  102.         private:
  103.             Compute() { mShader = 0; };
  104.             ~Compute() {};
  105.  
  106.         public:
  107.             // Methods
  108.             bool Create(Pointer data, UInt size) { Engine::Get()->mWindow.mDevice->CreateComputeShader(data, size, NULL, &mShader); };
  109.             void Bind() { Engine::Get()->mWindow.mDeviceContext->CSSetShader(mShader, NULL, 0); };
  110.             void Release() { mShader->Release(); };
  111.  
  112.         private:
  113.             ID3D11ComputeShader* mShader;
  114.             //--//
  115.             friend class Engine;
  116.         };
  117.     };
Advertisement
Add Comment
Please, Sign In to add comment