/// ****************************************************************************
/// @file   
/// @author Dr.Neeton
/// @date   2009?/X/X - 2013/12/26
/// 
/// @brief  DirectX  グラフィックパイプライン。
/// 
/// ****************************************************************************

#pragma once

#include "CPL_DX_RenderFragment.h"

namespace CPL {
namespace DX {

// _____________________________________________________________________________
/// @brief グラフィックパイプラインのバッファコネクション。
///
// *****************************************************************************
class Pipeline
{
public:
  using Function =
    void (*)( DXDeviceContext*   in_ptr_d3d_IC
            , RenderFragment_i_* in_ptr_buffer
            , int                in_slot_No_default
            );


  static void InputAssembler ( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  static void VertexShader   ( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  static void HullShader     ( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  static void DommainShader  ( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  static void GeometoryShader( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  static void PixelShader    ( _in<DXDeviceContext*> in_ptr_dx_devct, _in<RenderFragment_i_*> in_ptr_buffer, _in<int> in_slot_No );
  //static void OutputMerger   ( DXDeviceContext* in_ptr_dx_devct, Buffer::Interface_* in_ptr_buffer, int in_slot_No_default );
};


} // namespace DX
} // namespace CPL
